问题标签 [critical-section]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
841 浏览

delphi - Delphi 2009:如何防止网络应用程序泄漏关键部分?

作为 Vista 认证的一部分,Microsoft 希望确保应用程序退出时不会保持锁定(关键部分):

测试用例 31. 使用指定的 AppVerifier 检查验证应用程序不会闯入调试器(要求:3.2)

事实证明,使用 Delphi 2009 构建的网络应用程序确实会闯入调试器,它会显示如下无用的消息:

多次点击 Go 按钮后,您会遇到实际错误:

鉴于我的代码没有泄漏TCriticalSection,我该如何防止 Delphi 这样做。

0 投票
3 回答
8120 浏览

c# - 如何在 C# 中使用多个变量作为锁定范围

我有一种情况,只有当两个储物柜对象空闲时才应该执行一段代码。

我希望会有类似的东西:

然而,似乎没有这样的事情。那么这是否意味着这样做的唯一方法是:

这甚至会按预期工作吗?虽然代码可以编译,但我不确定它是否能达到我的预期。

0 投票
2 回答
503 浏览

c# - 根据 C# 中的条件保护关键部分

我正在处理一个有趣的场景。

我正在使用 EntityFramework 将(插入/更新)保存到多线程环境中的 SQL 数据库中。问题是我需要访问数据库以查看是否已经创建了具有特定键的寄存器以设置字段值(正在执行),或者设置不同的值(待定)是新的。这些寄存器由唯一的 guid 标识。

我已经通过设置锁解决了这个问题,因为我知道实体不会出现在任何其他进程中,换句话说,我在不同的进程中不会有相同的 guid,它似乎工作正常。它看起来像这样:

但这意味着当我要保存大量请求时,它们将排队。

我想知道是否有类似的东西(请把它当作一个想法):

这个想法将拥有一种基于条件保护的保护,因此每个实体 e 将拥有基于 e.UniqueId 属性的自己的锁。

任何想法?

0 投票
2 回答
2729 浏览

c++ - 创建线程安全单例 (C++) 时的临界区初始化

我正在尝试做与此解决方案中建议的相同的事情:

如何在 Windows 中创建线程安全的单例模式?

但是,临界区应该在哪里初始化和未初始化呢?

0 投票
1 回答
813 浏览

operating-system - 临界区问题

有人可以给我一个带有上下文切换的场景,以证明上述代码是否满足进度和有限等待的要求。

谁能给我一些关于如何检测代码是否满足进度或有限等待要求的提示(可能包括饥饿、死锁和追随你)

0 投票
3 回答
2262 浏览

delphi - 为什么线程在此控制台应用程序中串行运行?

我正在创建一个控制台应用程序,它需要运行多个线程才能完成任务。我的问题是线程一个接一个地运行(线程1开始->工作->结束,然后才启动线程2),而不是同时运行。另外我不希望超过 10 个线程同时工作(性能问题)。Bellow 是控制台应用程序和使用的数据模块的示例代码。我的应用程序以相同的方式工作。我使用了数据模块,因为在线程完成后,我必须用这些信息填充数据库。代码中也有注释解释这是做某事的原因。

应用程序控制台代码:

和数据模块代码

所以,正如我所说的,问题是我的线程一个接一个地运行,而不是同时工作。我也看到有时只有第一个线程工作,之后所有其他线程都创建并完成。在我的应用程序中,所有代码都受 try-excepts 保护,但不会引发错误。

有人可以给我一个建议吗?

0 投票
1 回答
603 浏览

visual-c++ - 如何使用任何方法编写线程同步 - 例如..Cevent

你好,我正在尝试编写一个简单的应用程序,它可以帮助我从串行端口读取并使用单个线程写入同一个串行端口......所以有人可以帮我管理线程之间的同步。这里是源代码 - Visual Studio 6 中的整个项目文件 - http://rapidshare.com/files/406340281/SerialPortTest.rar

谢谢

萨约尼

0 投票
2 回答
474 浏览

windows - 从不删除关键部分有什么后果吗?

我正在改进大量使用一些静态关键部分并且从不调用DeleteCriticalSection的本机代码,让它们处理退出以进行清理。

没有泄漏,也不担心 CS 总数太高,我只是想知道不清理它们是否会对 Windows 造成任何长期后果。我们有回归测试套件,每天会启动数千次程序,尽管最终用户不太可能做类似的事情。

由于部署机器的范围,我们还必须考虑 Windows XP,并且此本机代码是从托管应用程序运行的。

0 投票
1 回答
5393 浏览

multithreading - 用 SRW 锁替换临界区

如果应用程序针对 Windows Vista 或更高版本,我们可以用SRW 锁替换所有关键部分吗?由于临界区是互斥的,所以在使用上它相当于独占模式下的 SRW 锁,对吧?根据 MSDN,SRW 针对速度和空间进行了优化。这样做有什么缺点吗?我不确定微软如何在内部实现 CS 和 SRW。

谢谢!

0 投票
1 回答
820 浏览

c++ - c++ 中临界区储物柜的功能范围是什么?

以上来自于wxutil.h,是锁定不同进程的访问,还是只是锁定同一个进程中的不同线程?