pthread_create()和pthread_join()函数在同一循环中不起作用

时间:2019-03-28 20:13:36

标签: c++ c pthreads

我编写了一些代码,这些代码创建多个线程并在特定的内核上运行这些线程。但是,如果我将pthread_create()pthread_join()函数放在同一个循环中,则会在运行代码时出现问题。

for(TN=0;TN<NUM_THREADS;TN++)
{ 

  pthread_create(&thread[TN],NULL,(void*) &hardAffinity,(void*)&CPU[TN]);           

  pthread_join(thread[TN],NULL);
}

问题是,如果我想在cpu的单独核心上运行上述代码,则该代码将无效。我认为这是因为create和join方法处于同一循环中。仅当我将每个方法放在单独的循环中时,它才有效

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是在单独的循环中同时调用pthread_create()和pthread_join()函数

for(TN=0;TN<NUM_THREADS;TN++)

 { 

   pthread_create(&thread[TN],NULL,(void*) &hardAffinity,(void*)&CPU[TN]);           

 }

 for(TN=0;TN<NUM_THREADS;TN++)

 {

   pthread_join(thread[TN],NULL);

 }