私はC++でスレッドベースのアプリケーションを書いています。以下は、スレッド数をチェックする方法を示すサンプルコードです。どの時点でも、アプリケーションから生成されるワーカースレッドが20個しかないことを確認する必要があります。
#include<stdio.h>
using namespace std;
class ThreadWorkerClass
{
private:
static int threadCount;
public:
void ThreadWorkerClass()
{
threadCount ++;
}
static int getThreadCount()
{
return threadCount;
}
void run()
{
/* The worker thread execution
* logic is to be written here */
//Reduce count by 1 as worker thread would finish here
threadCount --;
}
}
int main()
{
while(1)
{
ThreadWorkerClass twObj;
//Use Boost to start Worker Thread
//Assume max 20 worker threads need to be spawned
if(ThreadWorkerClass::getThreadCount() <= 20)
boost::thread *wrkrThread = new boost::thread(
&ThreadWorkerClass::run,&twObj);
else
break;
}
//Wait for the threads to join
//Something like (*wrkrThread).join();
return 0;
}
この設計では、変数をロックする必要がありますthreadCount
か?このコードをマルチプロセッサ環境で実行するとします。