我一直在使用该pthread库来创建和连接C中的线程.
我应该何时从一开始就创建一个脱离的线程?与可连接线程相比,它是否提供任何性能优势?
pthread_join()在连接(默认情况下)线程上不执行操作是否合法?或者这样的线程是否应该始终使用该detach()功能pthread_exit()?
创建一个脱离的线程时遇到问题.这是我写的代码:
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()始终打印"可加入".谁能告诉我哪里出错了?