windows – 如何在VC中创建锁?

前端之家收集整理的这篇文章主要介绍了windows – 如何在VC中创建锁?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让我说我正在实现一个关键部分并保护VC中的一些数组,我该如何使用VC中的锁?
您需要 critical sections的API函数

> InitializeCriticalSection从任何线程(通常是主线程)调用一次以初始化锁定.在用它做任何其他事情之前初始化.
> EnterCriticalSection从任何线程调用获取锁定.如果另一个线程有锁,它将阻塞,直到它可以获得锁.关键部分是可重入的,这意味着即使线程已经拥有它,线程也会成功获取锁定.
> LeaveCriticalSection解锁.每次调用EnterCriticalSection都必须与对LeaveCriticalSection的匹配调用配对.不要让异常阻止这些获取/释放呼叫配对.
> DeleteCriticalSection从任何线程(通常是主线程)调用一次以完成锁定.当没有线程持有锁时执行此操作.在您调用此锁之后,锁无效,您无法再次尝试获取锁.

MSDN有助于提供trivial example.

如果您正在使用MFC,那么您可能会使用CCriticalSection来封装类中的Win32关键部分API.

至于你如何使用你的阵列.好吧,你的线程一次只能执行一个受锁保护的代码块.您需要使用锁来停止竞争条件,其中两个线程同时尝试读/写同一个内存位置,或者实际上其他更微妙的条件可能会破坏您的算法.

如果您要描述数组,其内容以及如何操作它,那么可能会给您一些具体的建议.究竟如何操作此阵列将对理想的同步策略产生重大影响,在某些情况下,您可以使用无锁方法.

原文链接:https://www.f2er.com/windows/371773.html

猜你在找的Windows相关文章