主线程和子线程总结

 
 运行结果
 
 
 
  
 
从上面可以看到:
【1】 如果主线程和子线程是并行的,虽然都是用while(1)但是倚靠

CPU的调度,主线程和子线程都有机会得到执行。

【2】 如果要在子线程里面改变主线程里面的数,就在 pthread_create

里面的最后 一个参数使用传地址调用(void *)&c,否则使用传值调用(void *)c

【3】使用pthread_join的目的在于:怕主线程执行的过快,子线程还没有执行
主线程就执行完毕并且退出了。
使用detach属性的目的在于,使得主线程和子线程之间割断联系,主线程退出
子线程也不会挂掉,子线程 退出,主线程也不用回收子线程的资源。

因为在本例子中,主线程和子线程都是无限循环执行的,即寿命无限长,主线程
和子线程也不用关心谁先得到执行,也不用关心资源的回收,所以调用pthread_create
的使用也就没有回收pthread_t tt这个用于管理子设备号的ID,也没用调用pthread_join来
等待子线程退出。
 
 这是一个可以精确控制线程何时结束的例子。
【1】线程里面使用while循环不断的执行。如果想要使得线程
结束运行,只要使得那个enable = false就OK了。

【2】这里主线程创建子线程之后,使用pause();函数,主线程
就一直阻塞在pause函数里面,直到捕捉到某个信号,这里面
定义的是ctrl+c信号,捕捉到ctrl+c后,程序跳转到了函数handler
_mini里面执行。

【3】然后就往下执行,执行pthread_join回收子线程的资源。最后
返回。
程序执行结果如下:
 
  
 如果程序不适用signal注册,而是直接用pause函数
那么,程序接收到信号后,默认是终结整个进程
 
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值