多线程编程

使用 acl 库的 C 库编写多线程程序

北战南征 提交于 2019-12-24 14:39:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、概述   在当今强调多核开发的年代,要求程序员能够写出高并发的程序,而利用多个核一般有两种方式:采用多线程方式或多进程方式。每处理一个新任务时如果临时 产生一个线程或进程且处理完任务后线程或进程便立即退出,显示这种方式是非常低效的,于是人们一般采用线程池的模型(这在JAVA 或 .NET 中非常普遍)或多进程进程池模型(这一般在UNIX平台应用较多)。此外,对于线程池或进程池模型又分为两种情形:常驻留内存或半驻留内存,常驻内存是指 预先产生一批线程或进程,等待新任务到达,这些线程或进程即使在空闲状态也会常驻内存;半驻留内存是指当来新任务时如果线程池或进程池没有可利用线程或进 程则启动新的线程或进程来处理新任务,处理完后,线程或进程并不立即退出,而是空闲指定时间,如果在空闲阀值时间到达前有新任务到达则立即处理新任务,如 果到达空闲超时后依然没有新任务到达,则这些空闲的线程或进程便退出,以让出系统资源。所以,对比常驻内存方式和半驻留内存方式,不难看出半驻留方式更有 按需分配的意味。   下面仅以ACL框架中的半驻留线程池模型为例介绍了如何写一个半驻留线程池的程序。 二、半驻留线程池函数接口说明 2.1)线程池的创建、销毁及任务添加等接口 /** * 创建一个线程池对象 * @param attr {acl

iOS多线程编程之三——GCD的应用

你说的曾经没有我的故事 提交于 2019-12-04 19:02:42
iOS多线程编程之三——GCD的应用 一、引言 在软件开发中使用多线程可以大大的提升用户体验度,增加工作效率。iOS系统中提供了多种分线程编程的方法,在前两篇博客都有提及: NSThread类进行多线程编程: http://my.oschina.net/u/2340880/blog/416524 。 NSOperation进行多线程操作编程: http://my.oschina.net/u/2340880/blog/416782 。 上两个进行多线程编程的机制都是封装于Object-C的类与方法。这篇博客将讨论的 Grand Central Dispatch(GCD)机制,则是基于C语言的,相比上面两种机制,GCD更加高效,并且线程有系统管理,会自动运用多核运算。因为这些优势,GCD是apple推荐我们使用的多线程解决方案。 二、GCD的调度机制 GCD机制中一个很重要的概念是调度队列,我们对线程的操作实际上是由调度队列完成的。我们只需要将要执行的任务添加到合适的调度队列中即可。 1、调度队列的类型 调度队列有三种类型: (1)主队列 其中的任务在主线程中执行,因为其会阻塞主线程,所以这是一个串行的队列。可以通过 dispatch_get_main_queue ()方法得到。 (2)全局并行队列 队列中任务的执行方式是严格按照先进先出的模式进行了。如果是串行的队列