【问题标题】:how to ensure the mutex shared by each thread averagely如何保证每个线程平均共享互斥量
【发布时间】:2012-04-04 19:32:29
【问题描述】:

我试图找出如何确保每个线程(Linux 中的 POSIX 线程)平均输入一个互斥锁。

在我的程序中,有一个全局队列,它有自己的互斥锁。几个写线程一次将一个元素写入队列,一个读线程每次从队列中读取一组元素。结果是队列的大小总是大于限制。

所以我的问题是如何确保每个线程平均访问互斥锁。任何 cmets 将不胜感激!

【问题讨论】:

标签: mutex


【解决方案1】:

我假设两个写入线程、一个读取线程和一个具有一定缓冲区限制的公共缓冲队列的场景。

有几种方法可以做到这一点。

  1. 创建优先级高于写入线程的读取线程。因此,每次当任何一个写入线程释放锁时,如果它与第二个写入线程一起在调度程序队列中等待,它将立即被读取线程获取。

  2. 使用全局同步标志来执行队列中的任务,并为某些读写条件给出一个阈值(比如如果我的队列计数是10,那么如果达到最大计数,下次我会只能在 flag 的帮助下调度 reader 线程一定次数,然后释放 flag 才能正常工作)。这将有助于限制队列增长大于限制。

希望你理解这两点。

【讨论】:

    猜你喜欢
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    相关资源
    最近更新 更多