我有一个包含唯一产品 ID 列表的 mysql 表(表-A)。使用该表的应用程序使用多个线程,每个线程选择一个表行(最顶部),使用 API 获取产品数据并将其更新到不同的表(表 B)。完成后,线程删除表 A 中相应的产品 ID 行并选择另一行进行处理(循环直到表 A 中的所有行都已删除而表 B 已更新)。
如何防止我的应用程序线程意外处理表 A 的同一行?有没有办法锁定一行不被选中?
示例:应用程序的线程 1 从表 A 中选择行 1。从 API 抓取所有相关数据并将其更新到表 B 中大约需要 10 到 15 秒。发生这种情况时,线程 2 将启动并检查表 A 以选择要处理的行。在这种情况下,我只想锁定第 1 行,这样线程 2 就不会看到/读取它,而是选择第 2 行。