Сегодня у меня появилась идея сделать ThreadQueue для C ++ для моего серверного приложения.
unsigned int m_Actives; // Count of active threads
unsigned int m_Maximum;
std::map<HANDLE, unsigned int> m_Queue;
std::map<HANDLE, unsigned int>::iterator m_QueueIt;
В дополнительной теме я бы обработал это, пока:
while(true)
{
if(m_Actives != m_Maximum)
{
if(m_Queue.size() > 0)
{
uintptr_t h = _beginthread((void(__cdecl*)(void*))m_QueueIt->first, 0, NULL);
m_Actives++;
}
else
{
Sleep(100); // Little Cooldown, should it be higher? or lower?
}
}
}
m_Maximum является настраиваемым и является максимальным числом потоков. Я думаю, что это должно работать, но теперь мне нужно подождать foreach Thread, который активен, и нужно проверить, закончен ли он / жив или нет. Но для этого я бы использовал WaitForSingleObject. Но тогда мне нужно 1 поток на тему. Итак, 2 темы. В одном что-то получалось. В другом он ожидает выхода 1 Thread.
Но я думаю, что это действительно плохо. Что бы вы сделали?