Просматривал кол-во открытых соединений и выяснил причину висяков. Я про те висяки, когда прога бесконечно ожидала данные. Когда висела на 2599 из 2600 например.
Причина такого бага в том, что из-за какой-то неизвестной х**ни кол-во открытых соединений равно 0, в то время как программа еще работает. По какой-то причине новые подключения больше не создаются или же уже были закрыты раньше.
Программа ждет пока все семафоры будут освобождены. Семафоры я освобождаю вместе с закрытием подключения. По этому я думаю, что программа перестает создавать подключения. Только в такой случае может быть такое разногласие, когда семафоры не высвобождаются из-за того, что новые соединения не создаются.
add: да, все верно
Последний раз редактировалось Lordronn; 03.06.2012 в 12:34.
|