首页 > 解决方案 > 如何使用带或不带互斥锁的多个 pthread 访问和修改相同的内存块?

问题描述

所以我有一个数组unsigned char words[64000][9],用零填充。我创建了两个 pthread,一个将随机选择数组上的一行并将该行的最后一位翻转为 1,另一个线程应读取相同的二维数组并检测哪一行有 1。我已经创建了线程,并且像这样传递同一个数组-

pthread_create(&flip, NULL, flip_bit, (void*) (words));
pthread_create(&detect, NULL, detect_bit, (void*) (words));

现在我的问题是:如何确保两个线程访问它并修改(执行它们所做的)相同的 2D 数组?没有互斥锁可以做到吗?如果互斥锁是必须的,我该如何为我的情况实施它?

谢谢,我真的很感激。

标签: arrayscpthreadsmutex

解决方案


推荐阅读