当前位置: 技术问答>linux和unix
请问大侠们,线程中sleep到底行不行?? 希望是线程sleep的终结帖!!
来源: 互联网 发布时间:2016-01-04
本文导语: 专门搜索了整版关于这个问题的帖子,也没有个准确的说法. 有的人说sleep,usleep,nanosleep都是睡眠整个进程,不是睡眠线程; 有的人说sleep,usleep,nanosleep都是睡眠本线程,不会睡眠进程; 有的人说sleep,usleep睡眠进程,nanosleep睡...
专门搜索了整版关于这个问题的帖子,也没有个准确的说法.
有的人说sleep,usleep,nanosleep都是睡眠整个进程,不是睡眠线程;
有的人说sleep,usleep,nanosleep都是睡眠本线程,不会睡眠进程;
有的人说sleep,usleep睡眠进程,nanosleep睡眠线程;
有的人说用select可以睡眠线程;
有的人说用pthread_cond_timedwait()才是睡眠线程最安全的;
有的人说在线程中使用sleep,usleep,nanosleep是不安全的;
到底谁的说法正确啊?? 还请真正的高手出手!!
有的人说sleep,usleep,nanosleep都是睡眠整个进程,不是睡眠线程;
有的人说sleep,usleep,nanosleep都是睡眠本线程,不会睡眠进程;
有的人说sleep,usleep睡眠进程,nanosleep睡眠线程;
有的人说用select可以睡眠线程;
有的人说用pthread_cond_timedwait()才是睡眠线程最安全的;
有的人说在线程中使用sleep,usleep,nanosleep是不安全的;
到底谁的说法正确啊?? 还请真正的高手出手!!
|
楼主不要把LINUX的线程和进程弄混,在WINDOWS中,进程下必定有一个线程,而LINUX不是,进程和线程界限不那么明显,进程下面是不一定有线程的,线程最初在LINUX中的定义就是一个轻量级的进程。所以,当你把所有线程看做进程来看的话,这个问题就容易理解了。
|
你给的后面一个连接就提了一句,又没说个所以然的。
Linux平台下的情况是,线程只不过是进程的一种特殊形式,而且事实情况也是
sleep只影响当前线程。
关于说DEC平台什么实现问题的,我不清楚
Linux平台下的情况是,线程只不过是进程的一种特殊形式,而且事实情况也是
sleep只影响当前线程。
关于说DEC平台什么实现问题的,我不清楚
|
在 linux 中是可以的, 在unix 我不知道
根据 《Advanced Linux Programming》所讲的
linux 中的线程 其实是进程 只是共享了虚拟地址空间,
所以信号, 还有 sleep 什么的都没问题
根据 《Advanced Linux Programming》所讲的
linux 中的线程 其实是进程 只是共享了虚拟地址空间,
所以信号, 还有 sleep 什么的都没问题
|
在linux中sleep是使用nanosleep来实现的,所以对于linux来说线程中可以安全的使用sleep函数
对于符合posix标准的系统和库,sleep被要求是异步信号安全的函数,只要你不混合使用
sleep和SIGALRM信号相关的函数,在线程中可以安全的使用sleep函数
欢迎访问我的个人网站 www.linuxc.net
对于符合posix标准的系统和库,sleep被要求是异步信号安全的函数,只要你不混合使用
sleep和SIGALRM信号相关的函数,在线程中可以安全的使用sleep函数
欢迎访问我的个人网站 www.linuxc.net
|
实际上Linux的线程就是轻量级的进程,具有很多进程的特征,usleep和sleep是不会影响其他线程的