【问题标题】:Thread synchronization ,anyone can give me algorithm?线程同步,谁能给我算法?
【发布时间】:2011-10-13 04:59:45
【问题描述】:

我的任务是用 C 编写一个加密程序。

有一个源文件和一个目标文件。我的程序 需要从源文件中读取内容,加密它们并 将加密内容写入目标文件。

我的程序中有 7 个线程。

三个线程一行一行地读取源文件并放入文件内容 进入共享缓冲区 1,线程从共享缓冲区 1 读取内容,对其进行加密 并放入共享缓冲区2,另外三个线程读取加密内容 从共享缓冲区 2 中写入目标文件。

我的想法是创建两个 mutice 以确保只有一个线程可以读取 源文件或同时写入目标文件。我的问题是如何控制多个线程对共享缓冲区 1、共享缓冲区 2 的访问。我知道它像生产者/消费者问题一样退出,但更复杂。任何人都可以给我建议吗?提前致谢。

【问题讨论】:

  • @Gww - 如果不是,这是一种非常愚蠢的做法!
  • @MartinBeckett:我也在想同样的事情
  • 单线程无法一次性读写文件
  • @GWW 是的,这是一个作业。
  • 我想当您考虑到finished 条件时,这并不是微不足道的:)

标签: c multithreading unix


【解决方案1】:

在 boost 示例here 中有一个关于互斥锁、共享内存和多线程通信的非常好的示例。

此示例使用共享内存来存储来自一个线程的消息,另一个线程读取它们,阻塞共享内存以进行并发访问。你可以申请你的线程。

【讨论】:

  • 我可以在哪里申请我的主题?另外,boost 是否支持 C?
  • 不在 C 语言中,但您可以学习它,以便在您的 C 程序中使用这些概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多