gpt4 book ai didi

linux - 我可以在 Linux 2.6 中使用多少个 pthread_rwlock

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:15 25 4
gpt4 key购买 nike

我的服务器中的线程之间有许多共享数据。如果我使用一个pthread_rwlock,则多线程stoppid。我使用 rwlock 数组:

#define DIR_LOCK_COUNT     32
pthread_rwlock_t dir_mutex[DIR_LOCK_COUNT];

...
# into main thread initialize pthread_rwlock
for(i=0; i < DIR_LOCK_COUNT; i++){
if(pthread_rwlock_init(&dir_mutex[i], NULL) != 0) {
syslog(LOG_ERR, "can't initialize rwlock %i", i);
return ERR;
}
}

...
# in the worker thread

int num = user_id % DIR_LOCK_COUNT;

pthread_rwlock_rdlock(&dir_mutex[num]);
struct dir *dir_trash = dict_search((dict*)user->dirs, &dir_trash_id);
pthread_rwlock_unlock(&dir_mutex[num]);

我有 35K 个用户的数组和 16 个线程池。我可以使用 pthread_rwlock 的维度为 1024 或更大吗?

最佳答案

pthread_rwlock() 的 Linux/glibc NPTL 实现不使用任何每锁内核资源。如果首先有足够的内存用于 pthread_rwlock_t,那么您就可以创建锁 - pthread_rwlock_init() 在 NPTL 实现中永远不会失败。

关于linux - 我可以在 Linux 2.6 中使用多少个 pthread_rwlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com