|
本帖最后由 urenai 于 2023-12-24 22:00 编辑
重新编辑一下帖子,之前发过面向对象的临界类,这次分享的这个使用方式不一样。在创建时会返回指针,方便保存。干脆再次发一遍吧。
第一种:
变量 cs <类型 = 变整数>
cs = 临界.创建 ()
临界.进入 (cs)
临界.退出 (cs)
调试输出 (cs, 临界.尝试 (cs))
临界.销毁 (cs)
- <火山程序 类型 = "通常" 版本 = 1 />
- 类 临界 <公开 折叠>
- {
- 方法 创建 <公开 静态 类型 = 变整数 注释 = "创建许可证" 返回值注释 = "返回临界指针" @禁止流程检查 = 真>
- {
- @ LPCRITICAL_SECTION cs = new CRITICAL_SECTION;
- @ ::InitializeCriticalSection(cs);
- @ return (INT_P)cs;
- }
- 方法 销毁 <公开 静态 注释 = "销毁许可证" @禁止流程检查 = 真>
- 参数 lpCriticalSection <类型 = 变整数>
- {
- @ ::DeleteCriticalSection((LPCRITICAL_SECTION)@<lpCriticalSection>);
- @ delete (void*)@<lpCriticalSection>;
- }
- 方法 进入 <公开 静态 注释 = "进入许可区" 折叠 @嵌入式方法 = "">
- 参数 lpCriticalSection <类型 = 变整数>
- {
- @ ::EnterCriticalSection((LPCRITICAL_SECTION)@<lpCriticalSection>)
- }
- 方法 退出 <公开 静态 注释 = "退出许可区" 折叠 @嵌入式方法 = "">
- 参数 lpCriticalSection <类型 = 变整数>
- {
- @ ::LeaveCriticalSection((LPCRITICAL_SECTION)@<lpCriticalSection>)
- }
- 方法 尝试 <公开 静态 类型 = 逻辑型 注释 = "尝试进入许可证" 折叠 @嵌入式方法 = "">
- 参数 lpCriticalSection <类型 = 变整数>
- {
- @ (BOOL)::TryEnterCriticalSection((LPCRITICAL_SECTION)@<lpCriticalSection>)
- }
- #
- }
复制代码
第二种:
变量 cs <类型 = 临界类>
调试输出(cs.尝试())
cs.进入 ()
cs.退出 ()
或者:
变量 cs <类型 = 变整数>
cs = 创建对象指针 (临界类)
调试输出 (读指针处对象 (cs, 临界类).尝试 ())
读指针处对象 (cs, 临界类).进入 ()
读指针处对象 (cs, 临界类).退出 ()
- <火山程序 类型 = "通常" 版本 = 1 />
- 类 临界类 <公开 "">
- {
- # @begin
- # <> <include>
- # CRITICAL_SECTION cs;
- # <> </include>
- # @end
- 方法 类_初始化 <"">
- {
- @ ::InitializeCriticalSection(&cs);
- }
- 方法 类_清理
- {
- @ DeleteCriticalSection(&cs);
- }
- 方法 进入 <公开 @嵌入式方法 = "">
- {
- @ EnterCriticalSection(&@sn<this>.cs)
- }
- 方法 退出 <公开 编辑时信息 = "43FFB, 0, 0, 0" @嵌入式方法 = "">
- {
- @ LeaveCriticalSection(&@sn<this>.cs)
- }
- 方法 尝试 <公开 类型 = 逻辑型 @嵌入式方法 = "">
- {
- @ TryEnterCriticalSection(&@sn<this>.cs)
- }
- }
复制代码
|
|