c# - 有没有办法在C#、Java等OOP语言中实现原子性?

标签 c# java atomic acid

数据库事务 ACID 属性中 A 的原子性告诉我们,在数据库上进行的每个事务都像二进制数字系统,0 或 1,全有或全无。

是否可以在 Java 或 C# 或任何其他通用语言等编程语言中实现相同的目标?例如

public static Ticket GetTicket(string filePath) {
  counter++;
  Application app = new Application(filePath);
  .
  .
  .

也许,我举了一个不好的例子,但我相信这应该足以给出一个想法。现在,想象一下我正在创建 Application 的行对象抛出异常,然后应用程序的执行将停止,并且静态变量counter的状态已经发生突变并且系统状态发生变化。有没有办法防止在抛出异常之前执行的语句造成损害?

最佳答案

您正在考虑software transactional memory ,它有 Java 和 C# 的库实现

关于c# - 有没有办法在C#、Java等OOP语言中实现原子性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17930584/

相关文章:

c++ - 如何使用 std::atomic<>

c# - 在线程中访问 UI

c# - 显示计数(包括禁用的显示器)

c# - 检查在上下文菜单条中单击了哪个子菜单项

c# - 使用 .NET Core 2.0 监视 Windows 上文件的更改

java - 如何检查数据库中枚举的无效数据

java - 如何将日期字符串从 JSON 转换为时间跨度

java - 常数的真正定义是什么?

ios - 如何从内部类正确转发原子属性?

cuda - 与 CUDA 共享内存互斥体 - 添加到项目列表