Всем привет,
В целях ускорения создания потоков наваял thread pool.
Не пойму как правильно ждать что б не было stack overflow ?
Я делаю примерно так:
void worker (* params){
// delaet work
...
//потом засыпает
SleepEx (INFINITE,TRUE);
}
void main (){
// handle получен ранее , всё норм
QueueUserAPC((PAPCFUNC)worker, handle....
}
Все работает. Только если я брякнусь в worker то увижу длинный стек трейс как будто worker вызывает себя снова и снова.
Если в таком духе, то будет stack overflow.
Не пойму, как делать то ..
Воистину, как напишешь сразу ответ в голову приходит.
В worker если уже запущен как APС то надо просто return, а Sleep только одна копия делает.