作者HILL33LOVE (就是愛希爾)
看板C_and_CPP
標題[問題] pthread在while迴圈 cpu loading飆高
時間Tue Nov 13 00:23:30 2012
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux
想請問一下 主程式建立一個thread因為要偵測某一個旗標的變化
所以用while迴圈一直偵測
但如果沒有nanosleep的話
cpu loading會飆很高 有時候會到100%
想請問一下 除了sleep之外還有其他辦法讓cpu loading不會這麼高嗎?
謝謝!!
int flag_detect_exit = 0;
void* detect_thread(void *p)
{
struct timespec ts;
ts.tv_sec=0;
ts.tv_nsec=10000000; // 10 milliseconds
while(!flag_detect_exit)
{
do_something();
//nanosleep(&ts, NULL);
}
}
int main(int argc, char* argv[])
{
pthread_attr_t detect_attr;
pthread_t detect_thread_t;
pthread_attr_init(&detect_attr);
pthread_attr_setdetachstate(&detect_attr,PTHREAD_CREATE_DETACHED);
pthread_create(&detect_thread_t , &detect_attr , &detect_thread , NULL);
pthread_attr_destroy(&detect_attr);
while(1)
{
sleep(1);
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.181.187
推 jackylu63:Busy waiting當然會使cpu usage飇高 11/13 00:42
→ jackylu63:請愛用synchorization機制 11/13 00:43
→ jackylu63:如Semaphore, mutex... 11/13 00:44
→ akasan:pthread_cond 也不錯 11/13 00:51