[問題] 想請問一個epoll以及pipe的問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
c++11
問題(Question):
當pipe在其他thread瞬間大量寫入時,
epoll_wait只會被喚醒一次,
如果沒一次把data全部讀完就會卡在epoll_wait
除非改成epoll_wait(efd, events, MAXEVENTS, 1000);
預期的正確結果(Expected Output):
每輪只從各fd讀取一部份資料,
要如何得知還有data未讀取,
並在下一輪繼續讀取剩下的資料呢?
程式碼(Code):(請善用置底文網頁, 記得排版)
以下是簡化後示意的程式碼:
http://codepad.org/8af9AZkm
g++ -o main.o main.cpp --std=c++0x -lpthread
請問一般時如何實作這種不會一次讀完的情況呢?
或是當要read的資料(stream)超過buffer時,
要如何每次只讀取各stream的一部分呢?
麻煩各為可以替我解答,
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.49.238
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1438081908.A.1B3.html
→
07/28 22:06, , 1F
07/28 22:06, 1F
推
07/28 23:03, , 2F
07/28 23:03, 2F
→
07/28 23:03, , 3F
07/28 23:03, 3F
→
07/28 23:03, , 4F
07/28 23:03, 4F
→
07/28 23:05, , 5F
07/28 23:05, 5F
→
07/28 23:06, , 6F
07/28 23:06, 6F
→
07/28 23:08, , 7F
07/28 23:08, 7F
→
07/28 23:09, , 8F
07/28 23:09, 8F
→
07/28 23:10, , 9F
07/28 23:10, 9F
→
07/28 23:11, , 10F
07/28 23:11, 10F
推
07/28 23:13, , 11F
07/28 23:13, 11F
→
07/28 23:14, , 12F
07/28 23:14, 12F
→
07/28 23:15, , 13F
07/28 23:15, 13F
→
07/28 23:16, , 14F
07/28 23:16, 14F
→
07/28 23:16, , 15F
07/28 23:16, 15F
→
07/28 23:19, , 16F
07/28 23:19, 16F
→
07/28 23:22, , 17F
07/28 23:22, 17F
→
07/28 23:23, , 18F
07/28 23:23, 18F
→
07/29 13:37, , 19F
07/29 13:37, 19F
→
07/29 13:37, , 20F
07/29 13:37, 20F
→
07/29 13:44, , 21F
07/29 13:44, 21F
→
07/29 13:48, , 22F
07/29 13:48, 22F
推
07/29 17:45, , 23F
07/29 17:45, 23F
→
07/29 17:46, , 24F
07/29 17:46, 24F
→
07/29 17:48, , 25F
07/29 17:48, 25F
→
07/29 21:30, , 26F
07/29 21:30, 26F
→
07/29 21:31, , 27F
07/29 21:31, 27F
→
07/29 21:32, , 28F
07/29 21:32, 28F
推
07/29 21:34, , 29F
07/29 21:34, 29F
→
07/29 21:34, , 30F
07/29 21:34, 30F