gpt4 book ai didi

c++ - C - 使用 PThreads 时更快地锁定整数

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

我有一个计数器,多个线程使用它来写入数组中的特定元素。这是我到目前为止所拥有的...

int count = 0;
pthread_mutex_t count_mutex;

void *Foo()
{
// something = random value from I/O redirection
pthread_mutex_lock(&count_mutex);
count = count + 1;
currentCount = count;
pthread_mutex_unlock(&count_mutex);
// do quick assignment operation. array[currentCount] = something
}
main()
{
// create n pthreads with the task Foo
}

问题是它太慢了。我正在接受一个整数文件作为 I/O 重定向并将它们写入一个数组。似乎每个线程都花了很多时间等待锁被移除。有没有更快的方法来增加计数器?

注意:我需要保持数字的顺序,这就是为什么我必须使用计数器而不是给每个线程一个特定的数组 block 来写入。

最佳答案

你需要使用互锁。查看Interlocked* Windows 或苹果的 OSAtomic* 上的功能功能,或者可能是libatomic在 Linux 上。

如果你有一个很好地支持 C++11 的编译器,你甚至可以使用 std::atomic .

关于c++ - C - 使用 PThreads 时更快地锁定整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817275/

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