我编写了一些代码,这些代码创建多个线程并在特定的内核上运行这些线程。但是,如果我将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方法处于同一循环中。仅当我将每个方法放在单独的循环中时,它才有效
答案 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);
}