当前位置: 技术问答>linux和unix
请教:线程中调用一个阻塞的方法后,进程及其它线程会阻塞么?
来源: 互联网 发布时间:2016-08-05
本文导语: 在学习多线程编程的时候,参考书上还有网上的一些资料,都说如果一个进程中的某一个线程调用了一个阻塞的系统调用函数后,那么该进程包括该进程中的其他所有线程也同时被阻塞。是这样么? 我自己测试...
在学习多线程编程的时候,参考书上还有网上的一些资料,都说如果一个进程中的某一个线程调用了一个阻塞的系统调用函数后,那么该进程包括该进程中的其他所有线程也同时被阻塞。是这样么?
我自己测试一把:
测试1、一个线程调用uart的read方法(阻塞在哪里读取),另一个线程不停的打印一些东西,结果是另一个线程一直在正常的打印啊!!
测试2、先创建2个线程,第一个打印东西,第二个再创建第三个线程,然后join等待(应该也是调用了一个阻塞的系统调用),而第三个线程不退出,结果测试出来,第一个线程也能正常的一直打印啊 ~!
所以不太明白为什么书上会这么说,请教大家!
我自己测试一把:
测试1、一个线程调用uart的read方法(阻塞在哪里读取),另一个线程不停的打印一些东西,结果是另一个线程一直在正常的打印啊!!
测试2、先创建2个线程,第一个打印东西,第二个再创建第三个线程,然后join等待(应该也是调用了一个阻塞的系统调用),而第三个线程不退出,结果测试出来,第一个线程也能正常的一直打印啊 ~!
所以不太明白为什么书上会这么说,请教大家!
|
在学习多线程编程的时候,参考书上还有网上的一些资料,都说如果一个进程中的某一个线程调用了一个阻塞的系统调用函数后,那么该进程包括该进程中的其他所有线程也同时被阻塞。是这样么?
=================================================================================
当然不是, 某个线程睡眠 , 只是它自己睡眠,关其他线程何事?
什么书? 哪里的网上资料? 有这么误人子弟的书?
如果一个进程中的 某个线程 阻塞就导致整个进程瘫痪, 那线程还有什么意义?
=================================================================================
当然不是, 某个线程睡眠 , 只是它自己睡眠,关其他线程何事?
什么书? 哪里的网上资料? 有这么误人子弟的书?
如果一个进程中的 某个线程 阻塞就导致整个进程瘫痪, 那线程还有什么意义?
|
正如你看到的那样,那是POSIX兼容的系统的行为,没记错的话pthread的命名就是POSIX兼容的thread。
也存在非POSIX兼容的系统,例如Windows,这些系统行为由他们自己确定。
也存在非POSIX兼容的系统,例如Windows,这些系统行为由他们自己确定。