Добре, намерих решение.. Благодарение на Will и PRR (моят колега).
Азне мога стартирайте нова нишка за всяка заявка, тъй като това е приложение в реално време, което трябва да обработва 1000+ съобщения в секунда..(все пак благодарение на R.. за идеята).
Също така, не беше възможно да се прекрати връзката през библиотеката, нито да се отмени/убие заявката, тъй като проблемът беше в DB сървъра..
И ето едно решение с груба сила, но все пак много по-добро от _EXIT( FAILURE )
:Ето свързания въпрос:"Как да принудим затваряне сокет на Linux?"
- така че току-що затворих сокета с помощта на системно повикване.
Важна ЗАБЕЛЕЖКА :(благодаря на Will) - Оказа се, че обвивката на нашата MySQL библиотека има флаг "fail-safe", така че при затворен сокет (или друга критична грешка) се опитва да "реши" проблема, така че отново отваря сокета , само по себе си, в моя случай. И така, току-що изключих тази опция и всичко е наред сега - изпълнението е прекратено поради изключение - това е "най-мекият" начин да направите това.
Това трябва да стане чрез друга нишка, разбира се - a таймер, например.
РЕДАКТИРАНЕ: Времето за изчакване наистина работи за версии след 5.0.25. Но поне на RHEL4 и RHEL5 изчакванията се утрояват по някаква причина! Например, ако някои от изчакванията са зададени на 20 секунди, реалното изчакване е ~60 секунди..
Освен това, друго важно нещо е, че тези изчаквания (както всички други опции) ТРЯБВА се задаваслед mysql_init
ипреди mysql_connect
или mysql_real_connect
.