Очистка

Чтобы избежать при завершении «утечек» памяти, программа должна убедиться, что завершены все рабочие потоки. Простейший способ выполнить это – закрыть ожидающий сокет. Это приведет к тому, что все имеющиеся вызовы Accept вернут FALSE и потоки завершатся.

 

try{

g_sListen.Close();

Sleep(340); // ожидание завершения потока

WSACleanup(); // отключение Winsock

}

catch(){

e->Delete();

}

 

Проблема может возникнуть только в том случае, если поток находится в процессе обработки клиентского запроса. Основному потоку придется предположить, что все рабочие потоки завершились.