在兩個Thread中同時對同一個 String Array進行快速的 append 和 remove
就會發生 Index Out of Range
已使用網路上找到的各種修改 extension Array方案都無效
var dataList = [String]() ... func Thread1_RemoveFun() { ... DispatchQueue.global().async /* 問題就出在這一行 */ { ... if( dataList.Count > 0) { dataList.remove(at: 0) } ... } ... } func Thread2_AppendFun() { ... dataList.append("Test") ... } func Thread3_ReadFun() { if( nIndex < dataList.Count) { // dataList.count 輸出是 1 但還是發生 // 用Debug breakpoint去看, dataList.count 盡然是 0 print( \(dataList.count)" readStr = dataList[nIndex] } }
同一個head, Auto Express 和 Add Express 竟然顯示不同數值
搞不懂...
沒有留言:
張貼留言