Tre*_*ith 14 c multithreading sleep yield pthreads
我花了很长时间寻找有关time.h :: sleep()和pthread.h :: pthread_yield()之间差异的信息,但无法找到任何可靠的参考资料,所以我发布了这个问题.
time.h :: sleep()和pthread.h :: pthread_yield()之间有什么区别?
更新:
我问的原因是因为我使用sleep()来睡眠()每个单独的线程......当我有8个线程和4个线程时,我的应用程序开始出现问题.当我上网查看sleep()是否只影响每个线程时,我找不到任何好的引用来说明Sleep()是否影响整个进程,或者sleep()只影响单个线程.
lot*_*har 15
pthread_yield子例程强制调用线程放弃对其处理器的使用,并在再次调度之前在运行队列中等待.如果在调用pthread_yield子例程时运行队列为空,则立即重新调度调用线程.
从睡眠手册页:
sleep()使调用进程休眠直到秒秒或信号到达而不被忽略.
如果你不想在你的线程中有实时延迟并且只是想让其他线程完成他们的工作,那么pthread_yield比sleep更适合.
JSB*_*ոգչ 14
sleep()会导致程序停止执行一段时间.无论系统上发生了什么,您的线程都不会再次启动,直到至少经过sleep()的时间已过去.pthread_yield()通知操作系统您的线程已完成工作,并且它可以将执行切换到另一个线程.但是,如果当时没有需要执行的高优先级线程,则您的线程可能会立即重新启动.
IOWs,在sleep()之后,即使没有其他人需要运行,你的线程也会保证停止运行,而pthread_yield()只是一种礼貌的方式,可以让其他线程有机会在需要时运行.
更新以响应问题更新:sleep()和pthread_yield()仅影响调用线程.
| 归档时间: |
|
| 查看次数: |
25805 次 |
| 最近记录: |