我正在尝试使用 pthreads 做一些事情并同步它们:
我怎么能只对一组线程使用互斥量?
假设我有 t0,t1, t2, .. t20。 pthreads 同时运行,我想为偶数线程锁定一个锁,为奇数线程锁定一个锁……或者前十个锁一个,其余的一个锁,或者一个锁定每个。我的意思是,根据数据对线程进行分组(此函数中的第四个参数:
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
并为一组 pthreads 共享互斥量。
我正在从事一种银行项目,我想锁定所有试图访问同一帐号的 phreads。 (作为关键部分 CRUD 操作)
是否有意义 ?或者有更好的方法来做到这一点?
在此先感谢您的帮助和时间;)
J.
最佳答案
互斥信号量并不意味着绑定(bind)到特定线程,它们旨在保护特定资源。
在您的情况下,该资源是银行帐户。我不相信每个帐户的互斥锁解决方案是可行的,尤其是如果您的银行有数千万客户,就像一些中国客户那样:-)
一个更可行的方法可能是在内存中保留当前正在处理的帐户列表,并使用单个 utex 来保护它。然后这些操作将锁定互斥锁,检查并可能修改列表,然后解锁互斥锁。
您正在寻找的更好方法是使用 ACID 类型的后备存储(如数据库)来确保所有更新都是原子的。
关于c - 如何为一组 pthreads 共享互斥锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8117173/