gpt4 book ai didi

c++ - 使用线程对 vector 进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:20 30 4
gpt4 key购买 nike

C++ STL 中定义的 vector 是可重入的还是线程安全的?我可以在不使用互斥锁的情况下使用两个线程并在 vector 的两半上工作(在本例中为排序)吗?例如:

int size = (Data_List.size())/2;

Thread A()
{

................ // Do we need to lock Data_list with a mutex
sort(Data_List.begin(),Data_List.begin()+size,cmp);
}

Thread B()
{
....// Do we need to lock Data_list with a mutex
sort(Data_List.begin()+(size+1),Data_List.end(),cmp);
}

我的问题是我们是否需要使用互斥锁来锁定对 Data_List 的访问?

注意:cmp 函数是一个常规的 int 比较函数。

最佳答案

只要线程在不同的内存区域工作,并且您的比较函数仅适用于该内存和局部变量,您应该没问题。从本质上讲,您通过在线程之间分配工作并只让线程处理它的一半数据来“锁定”表的每一半。

关于c++ - 使用线程对 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2368424/

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