2019年6月23日 星期日

iOS swift 5: 主執行緒或是背景執行緒


  主執行緒 DispatchQueue.main.async
  背景執行緒 DispatchQueue.global().async

 解決方案來源:
  Swift 3學習指南:重新認識GCD應用


DispatchQueue.main.async
{
 // 用於UI類
  self.MyBtn.setImage(UIImage(named: "MyBtnImage"), for: UIControl.State.normal)
}


let MY_TIMEOUT             = 100
let MySimaphore = DispatchSemaphore.init( value: 0)
MyThreadCreate()
{

hMyThread = Thread( target: self,
                       selector: #selector( MyThreadFunc), object: nil)
}

MyThreadFunc()
{
 ...
 DispatchQueue.global().async
 {
  //在 Thread中 用於 DispatchSemaphore類
  self.MySimaphore.signal()
 }
 ...
 if( MySimaphore.wait(timeout: .now() + .seconds(MY_TIMEOUT)) == .success)
 {
  ...
 }
 else
 {
  ...
 }
 
} 


沒有留言:

張貼留言