问题标签 [access-synchronization]

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 投票
4 回答
10368 浏览

c# - 如何同步对列表的访问在 ASP.NET 中使用?

我在同时访问列表的站点上遇到了一些问题。这个列表保留了一个购物车,多次删除会使网站崩溃。 同步它们的最佳方法是什么? 一把锁就够了吗?锁定选项似乎很难看,因为代码遍布各处并且非常混乱。

更新:这是一个这样实现的列表: public class MyList : List< SomeCustomType> { }

这是一个旧站点,因此不允许对其进行太多修改。我应该如何重构它以便在迭代它时安全锁定?

任何的想法!

0 投票
12 回答
5975 浏览

c++ - 在实时应用程序中同步多个线程之间的容器访问的最佳方法是什么

std::list<Info> infoList的应用程序中有两个线程之间共享。这 2 个线程正在访问此列表,如下所示:

线程 1:使用push_back(),pop_front()clear()在列表中(视情况而定) 线程 2:使用 aniterator遍历列表中的项目并执行一些操作。

线程 2 正在迭代列表,如下所示:

代码使用 GCC 4.4.2 编译。

有时 ++i 会导致段错误并使应用程序崩溃。该错误是在 std_list.h 第 143 行的以下行中引起的:

我想这是一个赛车条件。当线程 2 对其进行迭代时,该列表可能已被线程 1 更改甚至清除。

我使用 Mutex 来同步对这个列表的访问,并且在我的初始测试中一切正常。但是系统只是在压力测试下冻结,使得这个解决方案完全不可接受。这个应用程序是一个实时应用程序,我需要找到一个解决方案,以便两个线程都可以尽可能快地运行,而不会影响应用程序的总吞吐量。

我的问题是:线程 1 和线程 2 需要尽快执行,因为这是一个实时应用程序。我可以做些什么来防止这个问题并仍然保持应用程序性能?是否有任何无锁算法可用于此类问题?

如果我在线程 2 的迭代中错过了一些新添加Info的对象,那没关系,但我能做些什么来防止迭代器成为悬空指针?

谢谢

0 投票
1 回答
89 浏览

mysql - MySQL同步问题

我有一个管理用户帐户数据的 MySQL 数据库。每个用户只能查询自己的数据。我有一个脚本,在初始登录时获取用户数据并将其插入数据库。我安排了一个 cron 进程,它每 4 小时更新一次所有用户的数据。

以下是我对此的疑问:

(1) - 我需要在初始登录脚本上实现某种锁定机制吗?该脚本可以由大量用户同时执行 - 但每个用户在数据库中都有一个专用位置,因此它不会影响其他数据库行。

(2) - 关于 cron 进程的相同问题,我是否应该处理这种情况:当 cron 进程更新用户 i 数据时,用户 i 尝试从数据库中获取他的数据。我的意思是 MySQL 是否已经支持并处理这种情况?

任何帮助,将不胜感激。

谢谢。

0 投票
1 回答
606 浏览

multithreading - Opencl:两个循环之间的全局线程同步

我有一个 opencl 内核,可以在两个循环中计算两个全局缓冲区。第一个循环使用全局线程进行一些计算并将结果写入输出缓冲区“OutBuff”。然后第二个循环根据第一个循环(上一级)“OutBuff”中计算的结果更新全局缓冲区“UpdateBuff”的值。问题是两个循环之间的全局线程发生了变化,因为线程是并行执行的。但就我而言,我需要保持这两个循环之间的线程执行顺序。我需要计算具有相同全局 id 的两个循环。例如

这与使用信号量有关吗?