[問題] 關於pthread進行執行緒切換的時間點問題
看板C_and_CPP (C/C++)作者hn12303158 (2orx)時間15年前 (2010/07/28 01:23)推噓1(1推 0噓 19→)留言20則, 4人參與討論串1/2 (看更多)
請問各位先進
pthread的切換時間點究竟是什麼時候呢??
我原本期望pthread能像從前唸過的OS觀念一樣, 一個thread執行一段time slice
就換另一個thread執行, 而切換時機由OS schedualer決定. 但經過實驗後我發現
2個現象;
1. 一般而言, 在pthread中一旦某個thread開始執行無窮迴圈, 若沒呼叫sleep()
或pthread_yield()就永不切換到另個thread
2.若一個thread A負責接收socket封包(比如while迴圈中執行recvFrom()), 另一個
thread B負責處理其他工作, 即使thread B執行中而未曾呼叫sleep, 一旦kernel
收到封包, 就會去叫醒thread A(也就是換掉B), 然後執行recvFrom事務
請問以上2點是正確的嗎, 謝謝各位先進指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.61.242.17
→
07/28 01:28, , 1F
07/28 01:28, 1F
→
07/28 01:28, , 2F
07/28 01:28, 2F
→
07/28 01:29, , 3F
07/28 01:29, 3F
→
07/28 01:30, , 4F
07/28 01:30, 4F
→
07/28 01:31, , 5F
07/28 01:31, 5F
→
07/28 01:31, , 6F
07/28 01:31, 6F
→
07/28 01:39, , 7F
07/28 01:39, 7F
→
07/28 01:40, , 8F
07/28 01:40, 8F
→
07/28 01:41, , 9F
07/28 01:41, 9F
→
07/28 01:42, , 10F
07/28 01:42, 10F
→
07/28 01:43, , 11F
07/28 01:43, 11F
→
07/28 01:44, , 12F
07/28 01:44, 12F
→
07/28 01:44, , 13F
07/28 01:44, 13F
→
07/28 01:44, , 14F
07/28 01:44, 14F
→
07/28 01:45, , 15F
07/28 01:45, 15F
→
07/28 01:46, , 16F
07/28 01:46, 16F
→
07/28 01:52, , 17F
07/28 01:52, 17F
→
07/28 01:53, , 18F
07/28 01:53, 18F
→
07/28 01:58, , 19F
07/28 01:58, 19F
推
07/28 15:02, , 20F
07/28 15:02, 20F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章