我有两种类型的线程,一种是学生,另一种是图书管理员。我还有一个结构列表,其中包含基本信息,如书名,ISBN,每本书的发布年份。(这是线程之间的共享资源)我想在学生线程/例程中传递某本书的指针使用条件变量到图书管理员线程。 (这样图书管理员可以通过信号方式为学生保留这本书)我怎样才能实现这一点,或者这是否是正确的方法呢?
答案 0 :(得分:1)
最简单的方法是使用管道man 2 pipe
。
性能明智更快,但更复杂的方法是使用虚拟环缓冲区man 3 vrb
(用户态管道)或任何其他传递中间件的消息。
答案 1 :(得分:1)
如果在相同的过程中这些是threads(使用pthread库),您可以共享数据,因为address space对他们来说很常见。但是,请注意同步问题。
执行此操作的常用方法是对该公共数据的每次(读取或写入)访问使用互斥锁。也许还使用条件变量进行同步(即线程A需要告诉线程B某些重要的变化)。
阅读一篇好文章pthread tutorial(也许还有this)。
答案 2 :(得分:1)
这甚至是正确的方法吗?
你的例子非常人为......你为此使用线程和一些奇怪的局部变量列表的唯一原因是因为有些老师告诉你这样做。所以不,这不是实现在现实世界中使用的程序的正确方法。
在现实世界中,像这样的事情几乎肯定会通过数据库实现,其中DBMS处理各个帖子的访问。最有可能在某种客户端/服务器系统中,图书管理员使用客户端。我不明白为什么学生甚至会成为系统的一部分,除非作为谁借用这本书的数据发布。