關於NSRunloop的個人理解

2021-06-18 03:52:36 字數 1181 閱讀 7351

今天看到了nsrunloop,其實之前也有看了關於nsrunloop的內容,在這裡想簡單的就個人的理解總結一下。其實自己在開發的過程當中,還沒有更多的涉及到nsrunloop的功能。總的來說,nsrunloop就是類似於windows的訊息機制。他的存在是給執行緒增加事件處理機制。

對於多執行緒開發而言,有兩種處理方案,一種是不需要太多的互動,直接運算比較大的資料內容就可以,另一種方法是將執行函式加入到訊息迴圈當中去,等待事件的發生,然後執行。

有了nsrunloop,會使執行緒的表現變得更加的好,他的存在乙個重要目的是當有事件發生時,喚醒執行緒,當沒有事件時,執行緒將處於休眠狀態,這樣的多執行緒執行,使用者表現會非常的好。因為,執行緒其實也是有開銷的。

對於nsrunloop來說,他的輸入原,有事件輸入原和定時器,事件輸入原是非同步通訊的方式,而定時器是同步的輸入方式。對於事件輸入原,其實並不是使用者直接定義的,而是通過一些特定的port物件機器方法共同實現的。

run loops 是執行緒相關的的基礎框架的一部分。乙個 run loop 就是乙個事件處理 的迴圈,用來不停的排程工作以及處理輸入事件。使用 run loop 的目的是讓你的線 程在有工作的時候忙於工作,而沒工作的時候處於休眠狀態。

run loops 是執行緒相關的的基礎框架的一部分。乙個 run loop 就是乙個事件處理 的迴圈,用來不停的排程工作以及處理輸入事件。使用 run loop 的目的是讓你的線 程在有工作的時候忙於工作,而沒工作的時候處於休眠狀態。

何時使用runloop

3.2 何時使用 run loop

對於輔助線程,你需要判斷乙個 run loop 是否是必須的。如果是必須的,那麼 你要自己配置並啟動它。你不需要在任何情況下都去啟動乙個執行緒的 run loop。比 如,你使用執行緒來處理乙個預先定義的長時間執行的任務時,你應該避免啟動 run loop。run loop 在你要和執行緒有更多的互動時才需要,比如以下情況:

 使用埠或自定義輸入源來和其他執行緒通訊  使用執行緒的定時器  cocoa 中使用任何 performselector...的方法  使執行緒週期性工作

threading programming guide

如果你決定在程式中使用 run loop,那麼它的配置和啟動都很簡單。和所有執行緒 程式設計一樣,你需要計畫好在輔助線程退出執行緒的情形。讓執行緒自然退出往往比強制關 閉它更好。關於更多介紹如何配置和退出乙個 run loop,參閱」使用 run loop 物件」 的介紹。

關於Java nofity wait的個人理解

首先notify,wait的經典場景是生產者,消費者模型 importorg.slf4j.logger created by wcl on 17 9 17.public classconsumerimplementsrunnable public voidrun 消費 1,當前數量 name,con...

25 理一理關於tensorflow的各種騷操作

1.tf.squeeze 2.tf.cast 3.tf.expand dims 4.tf.slice 按照指定的下標範圍抽取連續區域的子集 講的不錯 5.tf.gather 按照指定的下標集合從axis 0中抽取子集,適合抽取不連續區域的子集 6.tf.one hot 7.tf.transpose ...

NSRunloop的簡單認識

最早接觸runloop的概念,是第一次用nstimer的時候。乙個最簡單的例子 void viewdidload 如果我們同時在介面上滾動乙個scrollview,那麼我們會發現在滾動停止之前,控制台是不會有輸出的,就好像scrollview在滾動的時候將timer暫停了一樣。通過了解後發現,其實是...