这是一个困扰我已久的设计问题。其实很简单,当您提供数据结构库时,您是否应该内置线程安全原语,还是只提供结构并让使用它的系统决定如何实现实际操作。
举个例子,一个支持生产者、消费者模型的循环缓冲区。有两个方法:Get和Write,每个方法都会更新全局变量fill count。现在,您是仅提供互斥体以进行锁定并让使用缓冲区的代码获取互斥体,还是在内部进行锁定并直接提供互斥排除。
STL似乎采取外部方式来完成,但出于性能原因,您希望提供更细粒度的锁定。
您怎么想?
举个例子,一个支持生产者、消费者模型的循环缓冲区。有两个方法:Get和Write,每个方法都会更新全局变量fill count。现在,您是仅提供互斥体以进行锁定并让使用缓冲区的代码获取互斥体,还是在内部进行锁定并直接提供互斥排除。
STL似乎采取外部方式来完成,但出于性能原因,您希望提供更细粒度的锁定。
您怎么想?