我想在不使用pthread_join的情况下连续执行两个不同的线程,可以吗?还是我真的必须声明new thread_t,有点像这样:
pthread_create(&th,&thread_attr,shtdwn,(void*)&lpBuffer);
pthread_create(&th,&thread_attr,Run,(void*)&args);
而且我不需要等待任何一个线程完成。非常感谢您的帮助,谢谢!
pthread_t
和pthread_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线程指向的缓冲区中的新线程;