我在 for 循环中创建了一些线程,在这个循环之后,将它们加入到另一个循环中。他们完成他们的工作,直到他们都完成它,是吗?我的最后一个结果在逻辑上是错误的。我的结果是正确的,就在创建后加入每个线程时!!
问问题
9342 次
1 回答
2
是的,我认为你做得对。例如 Letsee
extern "C"
{
#include <pthread.h>
#include <unistd.h>
}
#include <iostream>
using namespace std;
const int NUMBER_OF_THREADS = 5;
void * thread_talk(void * thread_nr)
{
//do some operation here
pthread_exit(NULL); //exit from current thread
}
int main()
{
pthread_t thread[NUMBER_OF_THREADS];
cout << "Starting all threads..." << endl;
int temp_arg[NUMBER_OF_THREADS] ;
/*creating all threads*/
for(int current_t = 0; current_t < NUMBER_OF_THREADS; current_t++)
{
temp_arg[current_t] = current_t;
int result = pthread_create(&thread[current_t], NULL, thread_talk, static_cast<void*>(&temp_arg[current_t])) ;
if (result !=0)
{
cout << "Error creating thread " << current_t << ". Return code:" << result << endl;
}
}
/*creating all threads*/
/*Joining all threads*/
for(int current_t = 0; current_t < NUMBER_OF_THREADS; current_t++)
{
pthread_join(thread[current_t], NULL);
}
/*Joining all threads*/
cout << "All threads completed." ;
return 0;
}
当您想通过调用退出该线程时由您决定。pthread_exit function
绝对不能确定哪个线程将首先执行。您的操作系统将决定何时资源可用于您的线程并在占用最少的 CPU 上执行它们
于 2014-12-14T11:51:05.280 回答