我需要创建一个c ++程序,创建一个数字a,一个线程,然后为每个线程n (0<n<a)
,要求每个线程将0到n之间的数字相加。所以,例如,如果a = 5,我需要创建5个线程,第三个线程需要从0添加到3.我使用main函数和while循环动态创建线程(使用pthread_create,我必须使用pthreads)。然后我有一个通用函数,所有线程都运行。我的问题是我不知道如何让每个线程知道它是哪个号码。那么,第三个线程将如何知道它是第三个而不是第一个。
我确信这很简单,但我找不到答案。
感谢您的帮助!
etk1220
答案 0 :(得分:2)
创建可变数量的线程并不难。例如:
void * func(void *);
std::vector<pthread_t> threads(n);
for (std::vector<pthread_t>::iterator it = threads.begin(); it != threads.end(); ++it)
{
int r = pthread_create(&*it, NULL, func, args);
}
如果出现错误,您需要添加错误检查和合适的回滚机制。使用<thread>
库会更简单,但是你说你不能使用它。
答案 1 :(得分:0)
如果你可以使用std :: threads那么这很麻烦,你可以扩展它来做你的工作
std::vector<std::thead> threads;
threads.push_back(&your_function, args...);