我试图找到一种方法来从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. 读取txt存储在不同的
- 3. 如何让多个进程读取相同的文档
- 4. Android:为不同的类读取不同的.txt
- 5. 如何通过多进程访问相同的变量C/C++
- 6. PHP争夺txt文件,同时保持某些部分相同
- 7. 多个读进程都可以读出相同的消息
- 8. 使用两个不同的管道读取和写入相同的进程C++
- 9. videocapture在多次调用中读取相同的帧不同
- 10. 多进程,读取同一文件的各种进程
- 11. 使用相同的关键部分对象进行读写
- 12. 不同进程的%cpu通过busybox和procps的顶部输出
- 13. 多模块读取相同的fifo
- 14. PDO多次读取相同的查询
- 15. 相同模型的不同实例(通过关联多个has_many)
- 16. 通过Interop获取Microsoft Publisher中的不同样式部分
- 17. C#MemoryStream.Read()总是读取相同的部分
- 18. 通过来自不同线程的UDP进行多播
- 19. 不同部分的相同功能 - jquery中的相对引用
- 20. SharedPreferences读取相同的值
- 21. 读取同一stdin的两个进程
- 22. SendKeys到多个相同的进程
- 23. 通过相同的加多个值,在存储过程中
- 24. 有很多通过与不同的外键
- 25. 读取超时:通过Bigquery Java API进行的同步查询
- 26. python多进程,多进程运行相同的指令
- 27. 相同内容的部分?
- 28. 从不同的线程克隆部分图像很慢
- 29. 分组tableview显示不同部分的相同行值
- 30. 需要相同的排序从DATABSE读取的数据在很多的ViewModels
您的流程将不得不就彼此的进展进行沟通。这可以通过各种风格的共享状态(例如需要同步的共享存储器)或通过IPC(进程间通信)来完成。这是我们所特定的,因为我可以得到给定的非特异性的问题。 – DevSolar
您错过了很多细节。什么是“记录”? (它是固定的字节数,还是由特定的分隔符或其他内容决定的?)您如何阅读它们? (你用的fread,读取或别的东西吗?)是工艺流程A和B相关的(它们是同一进程群中?是一个接一个的父母吗?他们甚至在同一台机器上运行?)如果没有细节,将很难诊断你的问题。 –