c - C中的细粒度锁定

标签 c multithreading concurrency locking mutual-exclusion

我有这个交换元素的代码:

   atomic{
       int temp = a[i];
       a[i] =a[j];
       a[j] = temp;
  }

我如何使用细粒度锁定来实现同样的效果?

最佳答案

可以使用mutex来达到这个效果,

mutex.lock();
atomic
{
   int temp = a[i];
   a[i] =a[j];
   a[j] = temp;
}
mutex.unlock();

如果有多个线程,你可以使用 POSIX 风格的读/写锁,如下所示,

pthread_rwlock_rdlock(rw_lock_ptr);
atomic
{
   int temp = a[i];
   a[i] =a[j];
   a[j] = temp;
}
pthread_rwlock_unlock(rw_lock_ptr);

关于c - C中的细粒度锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16773880/

相关文章:

c - 读取大型文本文件并在 C 程序中按字母顺序快速排序

ios - IOS中文件夹的并行复制

c# - 当不可变集合比并发更可取时

java - 并发:缓存一致性问题还是编译器优化?

c# - .net 中 Thread 类和 ProcessThread 类的区别?

java - 如何为ConcurrentHashMap使用和设置适当的并发级别?

c - 使用 Glade 和 GTK+ 进行信号处理

c - 注入(inject)DLL并打印消息

c - 分配和传递字符串的正确方法是什么?

java - ThreadPoolExecutor与Android的线程优先级