面试中线程和文件的问题

lyklm 2012-05-11 06:00:00
呵呵,今天和面试官争论一个问题
四个线程1、2、3、4,四个文件A、B、C、D,每个线程只能写一个固定的数
文件要求如下:
A:12341234.....
B:23412341.....
C:34123412.....
D:41234123.....
我认为只有用消息或信号量等手依次唤醒一到四号线程
面试官认为这样就变成了单线程,没效率
可我实在是没想到有效率的解决方案。
各位道友,有其他高见否?
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rendao0563 2012-05-11
  • 打赏
  • 举报
回复
分块 hash
lyklm 2012-05-11
  • 打赏
  • 举报
回复
确实,这个方案应该是更有效率的。
qq120848369 2012-05-11
  • 打赏
  • 举报
回复
不是说写固定的数吗。。。

1,lseek+write(1)扩充文件尺寸
2, 4个线程lseek到对应偏移量开始写自己的部分
lyklm 2012-05-11
  • 打赏
  • 举报
回复
兄弟,这不是在实际工作中的问题。
这个是面试的题目。题目应该是多个线程对文件依次写入
但是保持确定顺序,还不把这四个线程同步造成近似单线程处理的方案我实在没想到。
面试官说应该有,所以我才奇怪。咱学艺不精,那就看众位道友是否有高见
CandPointer 2012-05-11
  • 打赏
  • 举报
回复

内存buffer,作为缓存,各种线程并发地把数据写到缓存。

另外一个线程,把buffer写到硬盘。 单个硬盘, 单线程足以
downmooner 2012-05-11
  • 打赏
  • 举报
回复
不明白这样的需求的意义.如果非要这么做,完全可以再上一层建立任务分派来保持1个线程始终读写一个文件.
gemo 2012-05-11
  • 打赏
  • 举报
回复
这个好说,每个线程只写一个文件(通过移动文件指针)
A:1 1 1 1...
B:2 2 2 2...
...

写到指定次数后,每个线程再换文件写,这样就可以并发了。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧