在多线程环境中使用Sleep函数会有什么有关问题

在多线程环境中使用Sleep函数会有什么问题?
eg:

Sleep(1000); //会对主程序有影响吗?
C++ 

------解决方案--------------------
无条件阻塞了。。。 
------解决方案--------------------
参考Sleep源代码(如果有的话)
------解决方案--------------------
引用:
仅仅是会阻塞线程自身 1000ms?

是的,至少会阻塞1000ms,不影响其他线程
其他线程反而从中获得一定的利益,有1个线程在1000ms内不参与cpu时间片的竞争。
------解决方案--------------------
引用:
仅仅是会阻塞线程自身 1000ms?


其他影响目前我还没遇到过,或者可能没有影响到我的代码功能!
具体的得看看Sleep的源码已经和你的代码
------解决方案--------------------
引用:
子线程自身会出现先当于Sleep(5000)的效果,这种现象有可能1,2天都不会出现一次,有可能一个早上出现多次。

主板设计的问题
------解决方案--------------------
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!

《Windows核心编程》
------解决方案--------------------
       The  sleep()  function  shall  cause the calling thread to be suspended from execution until either the number of
       realtime seconds specified by the argument seconds has elapsed or a signal is delivered to the calling thread and
       its action is to invoke a signal-catching function or to terminate the process. The suspension time may be longer
       than requested due to the scheduling of other activity by the system.
------解决方案--------------------
sleep和Sleep不一样
------解决方案--------------------
引用:
Quote: 引用:

仅仅是会阻塞线程自身 1000ms?

是的,至少会阻塞1000ms,不影响其他线程
其他线程反而从中获得一定的利益,有1个线程在1000ms内不参与cpu时间片的竞争。


如果各个线程,独立运行的话,那么什么问题也没有;
如果有同步,那么其它线程也会受到影响,

如果有消息处理,那么,消息会阻塞1秒---不知道有多少消息会阻塞,

如果有定时器,定时器又采用消息的方式,
MFC定时器就是这样的,那么定时器也会阻塞,
如果定时器间隔较小,那么会有很多定时器时间到,的消息阻塞在这一秒---

Sleep的线程,什么也不做,那么如果占有其它线程需要的资源,必须等他1秒后醒来去处理,
只有释放了(至少等1秒),其他线程,才有机会得到资源。

Windows Sleep 不是必须的.


------解决方案--------------------
引用:
参考Sleep源代码(如果有的话)


你有吗?
------解决方案--------------------
引用:
Quote: 引用:

参考Sleep源代码(如果有的话)


你有吗?


老赵又被将了。他要是有win32的源码,呃。。
------解决方案--------------------
Windows的Sleep不会影响别的线程,(代码逻辑上引发的不论)
Linux的sleep据说是进程相关的,推荐用nanosleep来做 (但我再ubuntu11.04下测试sleep,并非进程相关的)

------解决方案--------------------
引用:
我同事碰到一个奇怪的现象:他在子线程里面

Sleep(1000); //但 现象是有时候会出现Sleep(5000)的效果。


即便是因为时间片原因没有及时解除阻塞, 也不可能到Sleep(5000)的效果, 我觉得还是你自己代码的问题.

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

参考Sleep源代码(如果有的话)


你有吗?


老赵又被将了。他要是有win32的源码,呃。。

    ; *** Sleep (857) ***
; SYM:Sleep#24EE
0x7c8024ee 8bff           mov     edi,edi
0x7c8024f0 55             push    ebp
0x7c8024f1 8bec           mov     ebp,esp
0x7c8024f3 6a00           push    0x0
0x7c8024f5 ff7508         push    dword ptr [ebp+0x8]