gpt4 book ai didi

c++ - 线程池共享资源锁定问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:59 24 4
gpt4 key购买 nike

我有一个使用线程池实现的基于 UDP 的应用程序。

消息被推送到队列中,当队列中有事情要做或有消息时,线程池就会被唤醒。线程池处理每个消息并将它们传递给持有一些状态的 session 对象。即 UDP 数据包是 session 的一部分, session 正在重组一大块数据。

该 session 对象需要访问共享资源。但是,另一个 session 对象也可以从资源中读取,但不能在写入时读取。

现在的问题是 session 对象的 DoWork 方法可以从不同的线程调用,我需要防止任何人写入它。因此,为此我需要锁定资源。

问题就出在这里。如果我使用标准互斥体,它不能在线程之间移植,所以我将尝试访问资源并且应该能够将数据放入资源中,但我不能,除非我是锁定资源的原始线程。

好像我需要一个 session key 来访问资源而不是我的线程 ID。

我该如何解决这个问题?在这种情况下,这里的 boost shared_mutex 似乎有点受限。

最佳答案

听起来你想要一个 reader/writer lock .

关于c++ - 线程池共享资源锁定问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3974281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com