CFLOCK多人共用資源鎖定/獨占
WEB是個多人共用的執行環境。  好處是多人多工執行緒,不會互相干擾。  缺點是同時搶資源時處理上就很傷腦筋。   什麼叫『搶資源』,白話說搶票啦,簡單說就是希望讓多人執行可以排隊做"某件事"。   假如資料庫裡面有一個表Tickets,裡面裡面有500筆資料,每一筆都是獨立票號。  當客人要來取票時,系統會找出Tickets裡面沒有被使用的票號發給客人。  所以程式碼會寫成:   <cfquery name="check1" datasource="SQLDB">   Select top 1 tick_no   From Tickets   Where tick_used = 'N'  </cfquery>  <cfif check1.recordcount GT 0>   <cfset newTicket = check1.tick_no>    <cfquery name="update1" datasource="SQLDB">    Update Tickets    Set tick_used = 'Y' , cust_id = '#LoginCust#'    Where Tick_no = '#newTicket#'   </cfquery>  </cfif>  <cftransaction action="commit" />  <cfif isdefined("newTicket")>   <cfoutput>You Got Tick No : #newTicket#</cfoutput>  <cfelse>   <cfoutput>No More Tickets can get !</cfoutput>  </cfif>    邏輯上看似沒有問題,但是請別忘記WEB是多人操作的,  結果就發生同時有2個人很湊巧的同一秒鐘按下取票,  因此上面程式碼就被兩個執行緒同時...
 
