c - 线程同步,谁能给我算法?

标签 c multithreading unix

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

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

我的程序中有 7 个线程。

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

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

最佳答案

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

此示例使用共享内存来存储来自一个线程的消息,而另一个线程读取这些消息,从而阻止共享内存进行并发访问。您可以申请您的主题。

关于c - 线程同步,谁能给我算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749637/

相关文章:

linux - 用于在列表中显示目录和内容的 Shell 脚本

c - 如何从二维数组打印单个字符

花栗鼠和代码块未定义的引用错误

c - 使用 dirent.h 浏览文件?

c - 并行区域内的这个指针变量是共享的还是私有(private)的?

sql - 运行 sql 文件而不打印其内容 POSTGRES

c - 当我尝试增加矩阵大小时,在 AMD openCL/C 中实现矩阵 vector 乘法会导致系统卡住

ios - 需要一些关于调度队列、线程和 NSRunLoop 的说明

c++ - 如何批量使用同一个线程池

unix - 我们可以在 UNIX 中创建指向符号链接(symbolic link)的硬链接(hard link)吗?