相关疑难解决方法(0)

Detached vs. Joinable POSIX线程

我一直在使用该pthread库来创建和连接C中的线程.

  1. 我应该何时从一开始就创建一个脱离的线程?与可连接线程相比,它是否提供任何性能优势?

  2. pthread_join()在连接(默认情况下)线程上不执行操作是否合法?或者这样的线程是否应该始终使用该detach()功能pthread_exit()

c linux pthreads detach

55
推荐指数
2
解决办法
3万
查看次数

Pthread创建为独立

创建一个脱离的线程时遇到问题.这是我写的代码:

void* testFunction() {

    pthread_attr_t attr;
    int chk,rc;

pthread_attr_init(&attr);
printf("thread_attr_init: %d\n",rc);

pthread_attr_getdetachstate(&attr, &chk);
printf("thread_attr_getdetachedstate: %d\n",rc);

if(chk == PTHREAD_CREATE_DETACHED ) 
    printf("Detached\n");
else if (chk == PTHREAD_CREATE_JOINABLE) 
    printf("Joinable\n");

return NULL;
}


int main (int argc, const char * argv[]) {

pthread_t thread1;
pthread_attr_t attr;

int rc;

rc = pthread_attr_init(&attr);

printf("attr_init: %d\n",rc);
rc = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
printf("attr_setdetachedstate: %d\n",rc);

rc = pthread_create(&thread1, &attr, testFunction, NULL);
printf("attr_create: %d\n",rc);

sleep(4);
pthread_cancel(thread1);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是testFunction()始终打印"可加入".谁能告诉我哪里出错了?

c pthreads detach

3
推荐指数
2
解决办法
3万
查看次数

标签 统计

c ×2

detach ×2

pthreads ×2

linux ×1