C ++多线程互斥锁“重置”

黑色的

std::mutex在多线程应用程序中使用A来通过多个线程访问相同的资源。这很好。但是在代码的某些时候,我必须使用终止线程TerminateThread(...)当我再次使用(_beginthreadex开始线程时,如果其中一个线程在终止时处于互斥锁,则会出现异常:

并发::在位置0x03B4F3D0处的不正确锁定。

这在rtlocks.cpp中的第1184行(在中bool critical_section::_Acquire_lock)中引发

LockQueueNode * pPrevious = reinterpret_cast<LockQueueNode *>(InterlockedExchangePointer(&_M_pTail, pNewNode));

我想,如果我可以“重置”互斥锁,我会得到一个例外,对吗?我怎样才能做到这一点?

(我用<process.h>

编辑

我尝试了以下方法:

std::mutex dataStorage_lock;
mutexHandler[0] = &dataStorage_lock; //storing all mutexs in an array

//when trying to delete:
delete mutexHandler[0];

但我得到:

调试断言失败!

表达式:_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)

理查德·霍奇斯

这是伪代码,但是您应该了解一下:

错误的:

function thread_proc():
  for_ever:
    do_things

function stop_my_thread():
  TerminateThread(...)

正确的:

function thread_proc():
  while(not terminate_signal):
    do_things

function stop_my_thread():
  terminate_signal.set();  // signals the thread to terminate
  thread.join();           // waits for the thread to terminate

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中为多线程使用互斥锁?

来自分类Dev

在c中使用互斥锁进行多线程并一次运行一个线程

来自分类Dev

(C)在多线程客户端和服务器中使用互斥锁

来自分类Dev

一组线程的C ++互斥锁

来自分类Dev

c。中的多线程 互斥体

来自分类Dev

我们是否需要互斥锁来访问C ++ 11-多线程中单例对象中的数据字段?

来自分类Dev

多线程重新锁定互斥锁

来自分类Dev

C ++ 11多线程锁和原子基元

来自分类Dev

如何在多线程 C++ 程序中读取锁

来自分类Dev

C++ 无锁队列因多线程而崩溃

来自分类Dev

C ++ 11互斥锁是否与不是用C ++ 11创建的线程兼容?

来自分类Dev

C ++ 11互斥锁是否与不是用C ++ 11创建的线程兼容?

来自分类Dev

在相互资源上具有互斥锁的多线程程序

来自分类Dev

多线程互斥锁可以使用几个互斥锁吗

来自分类Dev

确保当前线程在C ++ 11互斥锁上拥有锁

来自分类Dev

具有共享互斥锁和类实例的C ++ 11线程

来自分类Dev

C ++线程:condition_variable等待后无法解锁数组中的互斥锁

来自分类Dev

C:使用pthreads进行线程同步,锁定和解锁互斥锁

来自分类Dev

在C中使用具有分离线程的互斥锁

来自分类Dev

如何在C编程中的子线程中使用互斥锁处理同步

来自分类Dev

具有共享互斥锁和类实例的C ++ 11线程

来自分类Dev

C ++线程:condition_variable等待后无法解锁数组中的互斥锁

来自分类Dev

(共享)C ++中的互斥锁

来自分类Dev

多线程下的C ++ Map Contaiter-读取互斥下的迭代器->秒更改

来自分类Dev

C#多线程:仅从列表/字典中获取对象时,是否必须使用锁?

来自分类Dev

是否将所有代码放在互斥锁和互斥锁之间会使多线程(ness)失去意义

来自分类Dev

无法锁定C中的互斥锁

来自分类Dev

在C中使用互斥锁同步pthread

来自分类Dev

在C中使用互斥锁同步pthread

Related 相关文章

  1. 1

    如何在C中为多线程使用互斥锁?

  2. 2

    在c中使用互斥锁进行多线程并一次运行一个线程

  3. 3

    (C)在多线程客户端和服务器中使用互斥锁

  4. 4

    一组线程的C ++互斥锁

  5. 5

    c。中的多线程 互斥体

  6. 6

    我们是否需要互斥锁来访问C ++ 11-多线程中单例对象中的数据字段?

  7. 7

    多线程重新锁定互斥锁

  8. 8

    C ++ 11多线程锁和原子基元

  9. 9

    如何在多线程 C++ 程序中读取锁

  10. 10

    C++ 无锁队列因多线程而崩溃

  11. 11

    C ++ 11互斥锁是否与不是用C ++ 11创建的线程兼容?

  12. 12

    C ++ 11互斥锁是否与不是用C ++ 11创建的线程兼容?

  13. 13

    在相互资源上具有互斥锁的多线程程序

  14. 14

    多线程互斥锁可以使用几个互斥锁吗

  15. 15

    确保当前线程在C ++ 11互斥锁上拥有锁

  16. 16

    具有共享互斥锁和类实例的C ++ 11线程

  17. 17

    C ++线程:condition_variable等待后无法解锁数组中的互斥锁

  18. 18

    C:使用pthreads进行线程同步,锁定和解锁互斥锁

  19. 19

    在C中使用具有分离线程的互斥锁

  20. 20

    如何在C编程中的子线程中使用互斥锁处理同步

  21. 21

    具有共享互斥锁和类实例的C ++ 11线程

  22. 22

    C ++线程:condition_variable等待后无法解锁数组中的互斥锁

  23. 23

    (共享)C ++中的互斥锁

  24. 24

    多线程下的C ++ Map Contaiter-读取互斥下的迭代器->秒更改

  25. 25

    C#多线程:仅从列表/字典中获取对象时,是否必须使用锁?

  26. 26

    是否将所有代码放在互斥锁和互斥锁之间会使多线程(ness)失去意义

  27. 27

    无法锁定C中的互斥锁

  28. 28

    在C中使用互斥锁同步pthread

  29. 29

    在C中使用互斥锁同步pthread

热门标签

归档