Linux _pthread 属性的控制
线程的属性控制
问题
某些情况下,子线程创建并运行后,不需要返回到主线程。main2.c
解决方案:
把该子线程设置为“脱离线程”脱离线程的设置
1) 方式1
在创建该线程时,设置该线程的属性。 即:
—————————————————————————-
/* 定义一个线程属性 attribute */
pthread_attr_t attr;/* 初始化该属性 */ pthread_attr_init(&attr); /* 设置该线程的脱离属性 */ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); ---------------------------------------------------------------------------- /* 使用这个属性创建新线程 */ pthread_create(&thread, &attr, handle, &arg);
2)方式2
使用pthread_detach函数。
例如:pthread_detach(thread);注意:使用pthread_join对脱离线程无效!
注意:线程始终依附于所在的进程。
当进程中的主线程结束时,该进程也就结束了,
此时,该进程的所有子线程都将被迫结束。
所以在主线程要么始终不结束,要么用pthread_join,否则主线程结束后将导致所有其他线程都结束。其他线程属性的控制(一般都使用默认属性)
pthread_attr_setschedpolicy 设置线程的调度方式
pthread_attr_setstacksize 设置线程的栈大小main2.c
线程的属性控制
1. 问题
某些情况下,子线程创建并运行后,不需要返回到主线程。
main2.c
解决方案:
把该子线程设置为“脱离线程”
2. 脱离线程的设置
1) 方式1
在创建该线程时,设置该线程的属性。 即:
----------------------------------------------------------------------------
/* 定义一个线程属性 attribute */
pthread_attr_t attr;
/* 初始化该属性 */
pthread_attr_init(&attr);
/* 设置该线程的脱离属性 */
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
----------------------------------------------------------------------------
/* 使用这个属性创建新线程 */
pthread_create(&thread, &attr, handle, &arg);
2)方式2
使用pthread_detach函数。
例如:pthread_detach(thread);
注意:使用pthread_join对脱离线程无效!
注意:线程始终依附于所在的进程。
当进程中的主线程结束时,该进程也就结束了,
此时,该进程的所有子线程都将被迫结束。
所以在主线程要么始终不结束,要么用pthread_join,否则主线程结束后将导致所有其他线程都结束。
3. 其他线程属性的控制(一般都使用默认属性)
pthread_attr_setschedpolicy 设置线程的调度方式
pthread_attr_setstacksize 设置线程的栈大小