什么属性我用它来创建一个由在创建时创建线程锁定的并行线程互斥?在C/C++在Linux上,我该如何创建一个互斥预先锁定
回答
有是在锁定状态下创建一个互斥体之间没有可观察地,明显的差异,那就是创建并随后被锁定一个创建它的线程。也就是说,如果你写的(假设):
pthread_mutex_init(&mutex, &prelocked_attr);
/* done */
与
pthread_mutex_init(&mutex, 0);
pthread_mutex_lock(&done);
/* done */
在这两种情况下,它UB任何其他线程任何方式试图在创建线程到达之前访问互斥“完成”注释,然后执行一些可以让其他线程知道互斥量存在的操作。
事实上,你认为你需要一个预先锁定的互斥量,建议强烈对我来说,你试图做一些非常非常错误的事情,并可能调用未定义的行为。
测试 - 是否工作正常? – 2012-03-12 11:50:59
对不起,我不会让我发表我的评论。不知道为什么。 @ R主要问作为一个学术问题。我似乎记得看到预先锁定的互斥体的参考,但它可能是预设信号量。无论哪种情况,我都使用stl向量来跟踪多个线程中的活动。主线程正在尽职地检查每个线程存储的“时间”是否正在递增。我认为我有一个竞争条件,主线程在更新之前正在检查线程节点。这不是问题。给节点添加一个互斥体是为了防止主机看起来太快。谢谢。 – 2012-03-12 11:56:45
你不能。如果你需要这样做,你必须先锁定它,然后让其他线程访问它。无论如何,你将不得不这样做,以防止其他线程在初始化完成之前访问它。
它似乎不受pthreads互斥体接口支持。你将不得不相互锁定它,并使用其他一些同步方法来防止其他线程在你做之前抓住它(这是我假设你想在这里做的),在下面的半伪代码中:
pthread_mutex_lock(my_pthread_creation_mutex);
pthread_mutex_init(new_mutex, mutex_attributes);
pthread_mutex_lock(new_mutex);
pthread_mutex_unlock(my_pthread_creation_mutex);
你可以用你想要的东西得到最接近的是使用信号量。它们可以用特定的值初始化。在Linux(因为你有一个标签)man sem_overview
应该给你一个很好的介绍,该主题
+1 - 比我的答案好得多。 – 2012-03-08 16:09:09
这个答案是正确的,但它仍然受到我在我的回答中提到的同样的问题,即如果OP需要这样的事情,代码可能是错误的,因为没有办法正确的代码可能需要它。 (另一方面,使用* named * semaphores可以工作,因为'O_EXCL | O_CREAT'可以为你做必要的同步。) – 2012-03-08 16:19:58
- 1. 在Linux上如何创建互斥锁?
- 2. Linux互斥锁优先级继承
- 3. 原子创建一个文件锁定在MATLAB(文件互斥)
- 4. 不锁定pthread_cond_timedwait和pthread_cond_signal的互斥锁(在Linux上)
- 5. 锁定多个互斥锁
- 6. 创建在C互斥锁柜类++
- 7. Util创建在指定互斥锁上同步的列表
- 8. 我应该互斥锁定一个变量吗?
- 9. 如何在OpenMP上等待互斥锁
- 10. 如何在NodeJS中锁定(互斥)?
- 11. 创建一个互斥列
- 12. 如何找出哪个线程在互斥锁上有锁?
- 13. boost :: mutex /如何测试一个互斥锁是否被锁定
- 14. 线程在同一互斥锁的多个锁上的行为
- 15. 如何让一个线程解锁另一个线程锁定的互斥锁?
- 16. 在Linux上,如何确保解锁锁定在死亡/终止线程中的互斥锁?
- 17. 在C++ 98互斥锁中锁定变量共享数据互斥锁
- 18. 无法创建互斥锁。 ASP.NET
- 19. 在PHP上创建互斥阵列
- 20. 互斥锁和锁
- 21. 我应该在Linux内核开发中使用哪种互斥锁变体?
- 22. 互斥锁如何工作?
- 23. 锁定互斥锁时的线程优先级
- 24. 如何使用NtCreateMutant(Zw)在C++中创建一个互斥体
- 25. 如何创建一个文件锁定在linux下超时
- 26. 如何创建一个自定义的互斥
- 27. 提升互斥锁定在同一线程上
- 28. 如何在锁定语句中实现互斥?但是如果锁定被锁定,该块会被跳过?
- 29. android NDK互斥锁定
- 30. Linux互斥锁必须是全局的?
你的名字真棒。在寻求答案时祝你好运。 – Wes 2012-03-08 14:38:04
这样的机制似乎并不存在。如果你能详细说明你对这种需求的需求,那么SO的人可以帮你解决这个问题。 – Jay 2012-03-08 14:40:38
这种方法的目的是什么? – 2012-03-08 14:44:53