
linux下 多线程共享数据问题 5
环境:linux64位服务器现有海量文件(按秒级的时间顺序源源不断的来),我需要起多线程读取这些文件,并利用文件内容构建一个比较庞大的数据结构(各种map、list的组合...
环境:linux64位服务器
现有海量文件(按秒级的时间顺序源源不断的来),我需要起多线程读取这些文件,并利用文件内容构建一个比较庞大的数据结构(各种map、list的组合),另外还有一批线程检测这个数据结构某些位置的值并触发具体的任务(当然也可以在构建数据结构的同时进行触发)。
问题是:
1。多线程如何并发的构建这个数据结构(结构中的list是需要按照文件到来时间排序的),要对数据结构里面的所有数据都上锁么?上锁上在哪?能不上锁么?
2。如何并行的对这个数据结构进行插入和读取
3。其他还需要注意什么? 展开
现有海量文件(按秒级的时间顺序源源不断的来),我需要起多线程读取这些文件,并利用文件内容构建一个比较庞大的数据结构(各种map、list的组合),另外还有一批线程检测这个数据结构某些位置的值并触发具体的任务(当然也可以在构建数据结构的同时进行触发)。
问题是:
1。多线程如何并发的构建这个数据结构(结构中的list是需要按照文件到来时间排序的),要对数据结构里面的所有数据都上锁么?上锁上在哪?能不上锁么?
2。如何并行的对这个数据结构进行插入和读取
3。其他还需要注意什么? 展开
3个回答
展开全部
1,你可以设一个缓冲区,所有读取线程把读取的文件内容放在这个缓冲区内.另设一个专门用来建立数据库的线程.从这个缓冲区内读文件并写入数据库.
上锁的地方不应该在在数据上.那样太没效率,很浪费资源.只要在执行向缓冲区写内容的地方同步控制即可.
2,不清楚.这个太复杂了.我不知道.不过如果是并发的插入和读取的话只要在I/O操作时同步即可.
3....- -
上锁的地方不应该在在数据上.那样太没效率,很浪费资源.只要在执行向缓冲区写内容的地方同步控制即可.
2,不清楚.这个太复杂了.我不知道.不过如果是并发的插入和读取的话只要在I/O操作时同步即可.
3....- -
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询