看板 LinuxDev 關於我們 聯絡資訊
請問一下各位板友 mmap分配空間時 有上限嗎 @@? 像是32bit系統是不是就絕對不能用超過4G(還要考慮不是全部都能用)之類的 另外請問 兩個thread共用同一個file descriptor時 要怎樣才可以讓其中一個寫入的資料 可以馬上就被另一個看到 我試過用fsync好像沒有什麼效果 本來想說他應該是共用同一個streaming buffer可能連fsync都不需要的說 但是後來發現假使其中一個先寫入 另一個馬上去讀的話 會讀到eof... 用fsync好像也不能解決 @@... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.51.246
kaeluno1:1沒經驗,2是file descriptor既然是共用的,那其中一個寫後 12/11 09:46
kaeluno1:file position就到eof了,那當然另一個去讀的時候就是eof 12/11 09:47
EntHeEnd:喔喔....... 可是我是用pread和pwrite指定offset說 @@... 12/11 17:17
EntHeEnd:在offset處寫入一塊資料之後再去offset處拿那一塊... 12/11 17:18
EntHeEnd:如果我寫完之後 要讀的thread先sleep(1)就不會抓到eof 12/11 17:28
EntHeEnd:但是這應該不是解決辦法... 12/11 17:28
kaeluno1:這樣聽起來,讀的thread還是比寫的thread還早動作,有考慮 12/11 19:01
kaeluno1:用pipe來處理嗎? 12/11 19:02
buganini:1除了4G限制之外,你要要到4G連續位址空間其實也不太可能 12/12 00:32
buganini:我上一次要用大塊mmap的時候,最後是用多塊256M的 12/12 00:36
EntHeEnd:恩恩 感謝以上板友們的回答 !! 12/12 02:36
EntHeEnd:至於我的第二個問題 那是其他bug造成的 謝謝回應 QQ 12/12 02:38
EntHeEnd:簡單說就是同步機制寫錯 QQ 12/12 02:39