当前位置: 技术问答>linux和unix
进程中创建的线程,线程如何终止的
来源: 互联网 发布时间:2017-01-06
本文导语: i am one thread! i am one thread! i am one thread! i am one thread! i am one thread! i am one thread! back to the main funciton! i am the main! [root@Robot 2]# 1 #include 2 #include 3 #include 4 #include 5 #include 6 ...
i am one thread!
i am one thread!
i am one thread!
i am one thread!
i am one thread!
i am one thread!
back to the main funciton!
i am the main!
[root@Robot 2]#
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11
12 void *my1(void)
13 {
14 int fd;
15 while(1)
16 {
17 printf("i am one thread!n"); 18 }
19 }
20
21 int main(void)
22 {
23 pthread_t id1;
24 pthread_create(&id1, NULL, (void *)my1, NULL);
25 printf("back to the main funciton!n");
26 printf("i am the main!n");
27 return 0;
28 }
为什么我在线程中执行while(1)这个循环,最后线程自己退出了呢??认为线程把进程的资源用的差不多了,进程把线程给终止了,这样子对吗??程序执行到pthread_create(&id1, NULL, (void *)my1, NULL);之后不是去执行线程的代码了吗?
在线程中死循环的话,怎么又返回到进程中去了。
i am one thread!
i am one thread!
i am one thread!
i am one thread!
i am one thread!
back to the main funciton!
i am the main!
[root@Robot 2]#
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11
12 void *my1(void)
13 {
14 int fd;
15 while(1)
16 {
17 printf("i am one thread!n"); 18 }
19 }
20
21 int main(void)
22 {
23 pthread_t id1;
24 pthread_create(&id1, NULL, (void *)my1, NULL);
25 printf("back to the main funciton!n");
26 printf("i am the main!n");
27 return 0;
28 }
为什么我在线程中执行while(1)这个循环,最后线程自己退出了呢??认为线程把进程的资源用的差不多了,进程把线程给终止了,这样子对吗??程序执行到pthread_create(&id1, NULL, (void *)my1, NULL);之后不是去执行线程的代码了吗?
在线程中死循环的话,怎么又返回到进程中去了。
|
int pthread_kill(pthread_t thread, int sig)
|
然后pthread_cancel
|
因为主线程退出相当于进程exit。
所以主线程最好pthread_join阻塞在那里,线程最好主动退出,不主动就cancel之再join。
所以主线程最好pthread_join阻塞在那里,线程最好主动退出,不主动就cancel之再join。
|
#include
#include
#include
using namespace std;
void* pFunc(void*)
{
while(1)
{
cout