ios 非同步執行緒 NSLock 小結

2021-08-02 11:39:16 字數 1758 閱讀 1380

1

dispatch_queue_t q =dispatch_queue_create("thread-one",dispatch_queue_serial) ;

dispatch_async(q, ^);

// 獲取 名字的方法

// nslog(@"%s", dispatch_queue_get_label(dispatch_current_queue_label));

2

nsthread *thread = [[nsthread alloc]initwithtarget:self selector:@selector(display) object:nil];

thread.name = @"thread-three";

[thread start];

swfit 

1

let queue1 = dispatchqueue(label: "thread-one")

queue1.async

2

let thread1 =

thread(target: self, selector: #selector(viewcontroller.display), object: nil)

thread1.name =

"thread1"

thread1.start()

nslock使用

let thread1 =

thread(target: self, selector: #selector(viewcontroller.display), object: nil)

thread1.name =

"thread1"

thread1.start()

let thread2 =

thread(target: self, selector: #selector(viewcontroller.display), object: nil)

thread2.name =

"thread2"

thread2.start()

let thread3 =

thread(target: self, selector: #selector(viewcontroller.display), object: nil)

thread3.name =

"thread3"

thread3.start()

func display()
輸出

thread2--

thread3

thread2--

thread1

thread2--

thread2

混亂了,修改display方法 注釋開啟 輸出

thread3--

thread3

thread1--

thread1

thread2--

thread2

正常了

func display()

func log()

如果 lock 的內容 有非同步執行的 會等非同步執行完 再解鎖 上面 一共過了 15s 才解鎖

iOS執行緒鎖NSLock案例 賣火車票

import rootviewcontroller.h inte ce rootviewcontroller 宣告總票數 property nonatomic assign nsinteger totaltickets 宣告剩餘票數 property nonatomic assign nsinteg...

IOS開發之NSLock 的使用

在下面的例子中 使用 nslock 使得 執行緒a,b,c,依次執行 若不使用nslock 則執行緒的執行是無序的 nslock的執行原理 某個執行緒a呼叫lock方法。這樣,nslock將被上鎖。可以執行 關鍵部分 完成後,呼叫unlock方法。nslock lock nslock alloc i...

iOS 多執行緒 同步和非同步 序列和並行

ios中我們常使用dispatch queue和nsoperationqueue來實現多執行緒。而序列和並行 同步和非同步,這四個詞同時出現的地方是dispatch queue。nsoperationqueue貼心的隱藏了這些東西,已經不需要我們來操心了。所以下面會使用dispatch queue來...