我試圖找到一種方法來從txt文件中讀取數據,而我使用不同的進程。例如,我在進程A中,並且讀取文件的前10條記錄(可以說有100條記錄)。在過程B中,我想讀取下十條記錄。問題是,只有在A過程中我纔會記錄正確的記錄,而當我處於B過程中時,我只取0。提前致謝!通過很多進程讀取相同txt的不同部分
-1
A
回答
0
如果你深入挖掘,尤其是在linux環境下,你會發現線程比進程更輕量,當它實現需要多個執行的東西時。 我會以下列方式執行此操作:
- 創建一個具有10個線程的進程。每個線程將從TXT文件中讀取10條記錄。 (我將需要使用
pthread_create()
而不是fork()
)。我還將創建一個互斥鎖,每個線程在讀取文件時都會鎖定它。 - 我將創建TH1(thread_1)使用上述呼叫,鎖定互斥,打開文件,讀取使用
read()
呼叫,緩衝區將容納所有100個記錄,篩選出我需要在那個時間點,這10,完成後解鎖互斥體,使用pthread_join()
- 重複步驟2共10次,以便記錄所有記錄。
0
這可以通過使用Inter-process Communication
主要涉及shared-memory
,semaphores
或message-queues
來完成。有關這方面的基本知識,您可以read my blog
另一種方法是通過在進程之間傳遞文件描述符。一個進程打開文件,讀取10條記錄,然後將其傳遞給第二個進程。這是做同樣的事情,並將其發送到第一個。整個過程重複,直到文件結束。
文件描述符的傳遞是使用UNIX Domain Sockets
主要是做,你可以找到在this answer
希望這有助於與此相關的代碼。
相關問題
- 1. Django同步讀取多部分上傳
- 2. 多個進程讀取相同的文件php
- 3. 如何讓多個進程讀取相同的文檔
- 4. 使用python從多個進程讀取相同的文件
- 5. 讀取txt存儲在不同的
- 6. 如何通過多進程訪問相同的變量C/C++
- 7. 在MongoDB插入過程中跳過相同的ID很多
- 8. Android:爲不同的類讀取不同的.txt
- 9. 角2分相同部件多次通過1
- 10. PHP爭奪txt文件,同時保持某些部分相同
- 11. 多個讀進程都可以讀出相同的消息
- 12. 使用兩個不同的管道讀取和寫入相同的進程C++
- 13. videocapture在多次調用中讀取相同的幀不同
- 14. 多進程,讀取同一文件的各種進程
- 15. 相同的部分在兩個相同的應用程序中表現不同
- 16. 使用相同的關鍵部分對象進行讀寫
- 17. 不同進程的%cpu通過busybox和procps的頂部輸出
- 18. 多模塊讀取相同的fifo
- 19. PDO多次讀取相同的查詢
- 20. 相同模型的不同實例(通過關聯多個has_many)
- 21. 通過Interop獲取Microsoft Publisher中的不同樣式部分
- 22. C#MemoryStream.Read()總是讀取相同的部分
- 23. 通過來自不同線程的UDP進行多播
- 24. 不同部分的相同功能 - jquery中的相對引用
- 25. 讀取同一stdin的兩個進程
- 26. SharedPreferences讀取相同的值
- 27. SendKeys到多個相同的進程
- 28. 通過相同的加多個值,在存儲過程中
- 29. 有很多通過與不同的外鍵
- 30. 處理,同時通過ssh不填讀取行遠程讀取變量
您的流程將不得不就彼此的進展進行溝通。這可以通過各種風格的共享狀態(例如需要同步的共享存儲器)或通過IPC(進程間通信)來完成。這是我們所特定的,因爲我可以得到給定的非特異性的問題。 – DevSolar
您錯過了很多細節。什麼是「記錄」? (它是固定的字節數,還是由特定的分隔符或其他內容決定的?)您如何閱讀它們? (你用的fread,讀取或別的東西嗎?)是工藝流程A和B相關的(它們是同一進程羣中?是一個接一個的父母嗎?他們甚至在同一臺機器上運行?)如果沒有細節,將很難診斷你的問題。 –