日期:2014-05-16 浏览次数:20925 次
?
最近发现很多hpc 领域的MPI程序中在用usleep(0)?,比较差异。?后来问了之前做hpc?的同事?得到的答复是
一般用usleep(0)?的主要目的应该是:
CPU交出当前线程的执行权,让CPU去执行其他线程。也就是放弃当前线程的时间片,转而执行其他线程
?
我感觉很诧异。?Usleep(0)?来做这个事情?是POSIX要求的?还是一个意外的发现呢??我记得我之前都是用?sched_yield()?的啊。
于是有2个问题?
1 :usleep(0)?能不能让权,?
2?:如果可以和sched_yield?比到底谁更合适
我先man了一下usleep(0)?在linux上?,?
Usleep?不应该大于?1s?这个是确定无疑的,?但是usleep(0)?的行为?就比较诡异了。Man?上没有明确提到?看来POSIX是不要求让权的,?这在QNX?MAC?等操作系统上?明确看到
Glibc?对于?usleep(0)?是
同时linux?man?到明确写着
那usleep?究竟有没有这个效果呢?。
先来看几个奇怪的现象: