-1

我需要创建一个 c++ 程序,该程序创建一个线程数 a,然后对于每个线程 n (0<n<a),要求每个线程对从 0 到 n 的数字求和。因此,例如,如果 a=5,我需要创建 5 个线程,第三个线程需要从 0 添加到 3。我使用 main 函数和 while 循环来动态创建线程(使用 pthread_create,我必须使用 pthreads)。然后我有一个所有线程都运行的通用函数。我的问题是我不知道如何让每个线程知道它是哪个数字。那么,第三个线程如何知道它是第三个而不是第一个。

我确信这很简单,但我一直无法找到答案。

谢谢你的帮助!

ETK1220

4

2 回答 2

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>库,它会简单得多,但你说你不能使用它。

于 2012-11-02T21:36:22.630 回答
0

好吧,如果你可以使用 std::threads 那么这很简单,你可以扩展它来完成你的工作

 std::vector<std::thead> threads;
 threads.push_back(&your_function, args...);
于 2012-11-02T21:33:25.937 回答