【问题标题】:Basics Question: Best Practices concerning Posix Threads and Dynamic Memory基础问题:有关 Posix 线程和动态内存的最佳实践
【发布时间】:2009-11-02 12:18:28
【问题描述】:

由不同的并发运行的 posix 线程提供和读取动态增长的结构数组是否可取甚至可能?我必须在哪里寻找此类应用程序的最佳实践 - 有没有“常识”?我是这个领域的新手,需要一些初始指针来说明从哪里开始以及要注意什么。看来这里有很多可能,我不想掉入初学者的陷阱。

【问题讨论】:

    标签: c concurrency pthreads dynamic-data


    【解决方案1】:

    如需“共同智慧”的良好来源,请查看Improving Performance through Threads。 虽然这篇文章从显而易见的东西开始,但它对线程设计模式的描述很好而且很简单。
    还请务必阅读Concurrent Data Structures,它可以让您了解如何安排数据存储。

    【讨论】:

      【解决方案2】:

      听起来您在描述线程安全的堆栈或队列。对“线程安全”一词进行网络搜索可能会让您入门。

      通常,您使用互斥锁保护您的数组:默认情况下互斥锁是解锁的,当线程访问(修改或读取)结构时,它首先锁定互斥锁,进行修改并解锁互斥锁。如果另一个线程在互斥锁被锁定时需要访问数据结构,它将阻塞,直到锁定互斥锁的线程将其解锁。

      【讨论】:

      • 我会说:“当线程修改或读取结构时,它首先锁定互斥体”。您需要某种锁定(即使它可以是共享锁)来访问数据结构。否则,有人可能会在您阅读时获得写锁并对其进行修改。