c-我可以为已经执行的线程的新的不同线程连续重用pthread_t和pthread_attr_t吗



我想在不使用pthread_join的情况下连续执行两个不同的线程,可以吗?还是我真的必须声明new thread_t,有点像这样:

pthread_create(&th,&thread_attr,shtdwn,(void*)&lpBuffer);
pthread_create(&th,&thread_attr,Run,(void*)&args);

而且我不需要等待任何一个线程完成。非常感谢您的帮助,谢谢!

pthread_tpthread_attr_t变量都可以重新用于每个pthread_create调用。事实上,像这样重用pthread_attr_t是很常见的。然而,重新使用pthread_t变量有点不寻常,因为该值通常被存储以用于线程上的后续pthread操作(如pthread_join(。

此外,pthread_attr_t可以为NULL,在这种情况下将使用默认属性。但是,pthread_t参数不能为NULL。来自pthread_create手册:

attr参数指向pthread_attr_t结构,其内容在线程创建时用于确定新的线使用pthread_attrinit(3(初始化该结构,并且相关功能。如果attr为NULL,则使用默认属性。

在返回之前,对pthread_create((的成功调用将存储ID线程指向的缓冲区中的新线程;

最新更新