问题标签 [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.
database - 如何使用事务数据库来创建关键部分?
假设我有 2 台服务器与同一个事务数据库通信。
我想将其设置为只有这两个服务器中的一个将执行给定的定时操作(本质上是使用数据库来强制同步)。据我所知,类似这样的事情可能会奏效:
假设我的表 TABLE 有 2 列,ID 和 STATUS。如果我这样设置代码:
这会起作用吗,还是我在这里遗漏了一些概念?
c++ - C++:并发和析构函数
假设您有一个可以被许多线程访问的对象。临界区用于保护敏感区域。但是析构函数呢?即使我一进入析构函数就进入临界区,一旦析构函数被调用,对象是否已经失效?
我的思路:假设我进入析构函数,我必须等待临界区,因为其他线程仍在使用它。一旦他完成了,我就可以完成对对象的破坏。这有意义吗?
c - C - pthread 函数重用 - 局部变量和竞争条件
如果我定义了一个线程函数,它重用了主线程也使用的另一个函数......是否可能存在竞争条件?同一函数中的局部变量是否跨线程共享?在这种情况下,函数 do_work 用于 thread_one 线程和主线程。两个线程都可以修改函数 do_work 中的局部变量 x 从而产生意想不到的结果吗?
c++ - TryEnterCriticalSection
我不确定我是否理解正确。TryEnterCriticalSection
只调用一次,它不像棒EnterCriticalSection
?例如,如果我写类似
如果TryEnterCriticalSection
返回 false,则该部分do something that must be synh
将永远不会完成,并且do other job
部分将被执行,然后go on
?
c++ - 两个线程访问的共享队列的临界区代码是什么?
假设我们有一个共享队列(使用数组实现),两个线程可以访问该队列,一个用于从中读取数据,另一个用于向其写入数据。现在,我有一个同步问题。我正在使用 Win32 API(EnterCriticalSection 等)来实现这一点。
但我的好奇心是队列的入队和出队操作中的关键部分代码是什么?
仅仅因为,两个线程正在使用共享资源?为什么我看不到任何问题是:前后端都维护了,所以当ReaderThread读取时,它可以从前端读取,而当WriterThread写入时,它可以轻松地写入后端。
可能会出现哪些潜在问题?
c++ - 为什么在我推送包含关键部分的对象时出现内存错误?
请告诉我导致错误的原因以及如何解决。
c++ - 关键部分的最简单实现?
在我的一种 C++ 方法中,我必须以这样一种方式执行此操作,即在给定时间只有一个线程访问这段代码。
谁能指导我实现这一目标的最简单和最好最小(代码明智)的方法是什么?我不想使用Boost Library
,也不想为了实现这一点而在我的代码中弄得一团糟。我正在寻找一个标准的 C++ 解决方案,而不是只适用于 Windows 的东西。
thread-safety - 关于一个容器的线程安全问题
让我们稍微谈谈理论。我们有一个容器,我们称它为 TMyObj,如下所示:
让一个名为 TMyClass 的类有一个上面的容器数组 + 3 个有用的函数。一种用于获取要更新的对象。一种用于向某个对象添加更新信息,一种用于获取更新的对象。它也按此顺序调用。这是课程
现在想象 5+ 个线程使用前两个线程,另一个线程在上面类的一个实例上使用最后一个函数 (getUpdadtedObj)。
问题:如果最后一个函数中没有关键部分,它会是线程安全的吗?
c++ - 如何使用 Boost 制作关键部分?
对于我的跨平台应用程序,我已经开始使用 Boost,但我无法理解如何实现代码来重现 Win32 的关键部分或 .Net 的行为lock
。
我想编写一个Foo
可以从不同线程调用的方法来控制对共享字段的写操作。应该允许在同一线程内进行递归调用(Foo() -> Foo())。
在 C# 中,这个实现非常简单:
linux - 为什么要使用 pthread_mutex_lock,而同样可以以可编程的方式完成?
我们都知道信号量和临界区问题。
在 pthreads 中,这可以使用pthread_mutex_lock( )
和进行排序pthread_mutex_unlock( )
。
但是为什么我们需要这些系统调用,当它们可以在代码中实现时,通过执行以下操作:
和上面一样,能解决临界区问题吗?如果不是,那为什么?