小编Eld*_*bob的帖子

您是否可以通过保证多个线程不能访问同一内存来避免锁定?

假设我有一个大型数组,我想用多个线程处理内容.如果我将每个线程委托给特定的部分,保证不重叠,这是否消除了锁定的需要,假设线程不访问数组外的任何其他内存?

像这样的东西(伪代码):

global array[9000000];

do_something(chunk) {
    for (i = chunk.start; i < chunk.end; i++)
        //do something with array
}

main() {
    chunk1 = {start: 0, end: 5000000};
    chunk2 = {start: 5000000, end: 9000000};

    start_thread(thread1, do_something(chunk1));
    start_thread(thread2, do_something(chunk2));

    wait_for_join(thread1);
    wait_for_join(thread2);
    //do something else with the altered array
}
Run Code Online (Sandbox Code Playgroud)

c c++ multithreading lock-free

41
推荐指数
3
解决办法
2194
查看次数

标签 统计

c ×1

c++ ×1

lock-free ×1

multithreading ×1