c - 如何为一组 pthreads 共享互斥锁?

标签 c unix synchronization pthreads mutex

我正在尝试使用 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/

相关文章:

c - 更新标题栏 Winapi

c - 不以 root 身份运行时如何在 linux 中检查登录凭据?

shell - 在 Solaris 上替代 `sed -i`

bash - 从 Bash 中的行中删除中间的 n 个字符

Java RMI-线程的意外行为

c - 为笨蛋生成一个 makefile

c - 查找一个月的第一天属于星期几的结果不正确

unix - 在Makefile中的文件名中转义冒号

git - 在不同的 GIT-Repos 中同步 2 个文件夹

使用 setPeriodic() 时,Android JobScheduler 运行过于频繁