擅长:python、mysql、java
<p>最简单的方法之一(语法是近似的)</p>
<p>每个线程在<code>my_number</code>变量中必须有自己的编号,该编号在所有线程中都是唯一的</p>
<p>将<code>thread INT DEFAULT NULL</code>字段添加到结构中</p>
<p>线程试图通过以下方式保留一条非保留记录:</p>
<pre><code>cur.execute("UPDATE getprocessid SET thread = %s WHERE thread IS NULL AND status=%s LIMIT 1",(my_number,"uploaded",))
</code></pre>
<p>然后线程处理此保留记录:</p>
<pre><code>cur.execute("select asset_id from getprocessid where thread=%s",(my_number,))
row = cur.fetchone()
if row is not None:
process the record
</code></pre>
<p>如果保留成功,则处理保留的记录。如果另一个线程覆盖了保留值,则不会返回任何记录,并且它将被<code>IF</code>检测到-跳过处理代码,线程尝试保留另一条记录</p>