【问题标题】:Should I use an access control on a shared structure between threads?我应该对线程之间的共享结构使用访问控制吗?
【发布时间】:2013-03-03 07:23:02
【问题描述】:

我正在使用 pthread 库用 C 语言编写一个小软件。 我有一堆线程需要对包含动态允许的字符数组的共享结构进行写访问但是我可以保证两个不同的线程永远不会尝试访问该数组的相同元素。我的问题是:我应该使用信号量或互斥锁之类的东西还是没有必要?

【问题讨论】:

  • 问:如果没有必要,我应该使用 [a lock] 吗?答:不,当然不是:)。问:如果我能保证两个不同的线程永远不能访问这个数组的同一个元素,我需要锁吗? A:如果你能保证同一个“实体”(例如数组元素或指针)永远不会被多个线程同时更新,不会。

标签: c multithreading concurrency pthreads posix


【解决方案1】:

在您的情况下,线程之间不共享数据,并且由于线程之间不共享数据,因此不需要同步机制。

【讨论】:

    【解决方案2】:

    嗯,我想你自己回答了这个问题!

    互斥锁的目的是防止不同线程对某些资源的并发访问。如果您可以通过设计保证您的线程永远不会同时访问(读取或写入)相同的内存区域,那么您不需要互斥锁保护。

    【讨论】:

      【解决方案3】:

      如果您的线程只读取信息,则不需要锁定。

      如果您的线程修改其他线程看不到的信息,则不需要锁定。

      如果有一个地方可以被一个线程修改并被其他人使用,则需要使用互斥锁。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 2020-10-22
        • 1970-01-01
        • 1970-01-01
        • 2011-04-30
        • 1970-01-01
        相关资源
        最近更新 更多