runloop的解读

对于Run Loop的理解

RunLoop,是多线程的法宝,即一个线程一次只能执行一个任务,执行完任务后就会退出线程。主线程执行完即时任务时会继续等待接收事件而不退出。非主线程通常来说就是为了执行某一任务的,执行完毕就需要归还资源,因此默认是不运行RunLoop的; 每一个线程都有其对应的RunLoop,只是默认只有主线程的RunLoop是启动的,其它子线程的RunLoop默认是不启动的,若要启动则需要手动启动;

在一个单独的线程中,如果需要在处理完某个任务后不退出,继续等待接收事件,则需要启用RunLoop;

NSRunLoop提供了一个添加NSTimer的方法,可以指定Mode,如果要让任何情况下都回调,则需要设置Mode为Common模式;

实质上,对于子线程的runloop默认是不存在的,因为苹果采用了懒加载的方式。如果我们没有手动调用[NSRunLoop currentRunLoop]的话,就不会去查询是否存在当前线程的RunLoop,也就不会去加载,更不会创建。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

【实验手册】使用Visual Studio Code 开发.NET Core应用程序

2359
来自专栏欧阳大哥的轮子

Windows窗口消息和消息队列

所有基于事件驱动的操作系统中的GUI程序,都会在主线程中运行一个消息泵来从消息队列中取出消息并执行对应的处理逻辑。消息队列中的消息除了由系统产生外,还提供了对应...

2985
来自专栏跟着阿笨一起玩NET

Asp.Net Session的三种方法及Web.Config设置

转载:http://user.gw-ec.com/login/safelog/redirectt?session=so%2f%2bSjyZURMOe54xgk%...

5932
来自专栏哲学驱动设计

ASP.NET MVC 框架结构图

    最近在学ASP.NET MVC,画了一些图,和大伙分享下: Routing 组件 ? 图1 独立的ASP.NET Routing组件 MVC-Contr...

3877
来自专栏张善友的专栏

Debian 和Ubuntu Mono 3.0 部署包

Mono 3.0 刚发布,Debian 的Mono打包工作也开始了, 这篇博客《Mono 3.0 Preview Packages for Debian and...

2127
来自专栏黑泽君的专栏

Qt Creator新安装后运行一个程序后,出现错误:Error while building/deploying project dict-qt (kit: Desktop Qt 5.10.0 Mi

1、环境介绍:在windows10 Pro下,当前Qt Creator版本,如下图所示:

1.4K2
来自专栏乐沙弥的世界

SQL Server 2012安装错误:Error while enabling Windows feature: NetFx3, Error Code: -2146498298

最近在安装SQL server 2012时,碰到错误:Error while enabling Windows feature: NetFx3, Error C...

2232
来自专栏漫漫全栈路

【译】ASP.NET MVC 6路由技术

原文作者:Pramod Gawande 原文地址:https://dzone.com/articles/aspnet-mvc-6-routing-techniq...

3117
来自专栏章鱼的慢慢技术路

Linux操作_常用命令操作练习

1784
来自专栏WebDeveloper

Thinkphp的cron计划任务

cron1默认在ThinkPHP\Library\Cron\cron1.php如果没有cron目录则新建一个,cron1.php自己所要执行的脚本

2033

扫码关注云+社区

领取腾讯云代金券