使用CGD比前面两种更高效(据说是这样,有兴趣的同学可以去试试)。这也是苹果比较推荐使用的方式。
GCD是Grand Central Dispatch的缩写,是一组用于实现并发编程的C接口。GCD是基于Objective-C的Block的特性开发的,基本的业务逻辑和NSOperation很像。都是添加一个任务到一个队列,由系统来负责线程的生成和调度。因为直接使用Block,所以使用起来很是方便,降...
分类:
移动开发 时间:
2015-06-03 13:42:45
阅读次数:
198
一、进程和线程 二、各种队列! 1、GCD:Grand Central Dispatch 2、串行队列(Serial) 你可以创建任意个数的串行队列,每个队列依次执行添加的任务,一个队列同一时刻只能执行一个任务(串行),但是各个队列之间不影响,可以并发执行。每个队列中的任务运行在一个由...
分类:
编程语言 时间:
2015-06-02 14:42:54
阅读次数:
193
内容:借助网上的解释:
第一步分割任务。首先我们需要有一个fork类来把大任务分割成子任务,有可能子任务还是很大,所以还需要不停的分割,直到分割出的子任务足够小。
第二步执行任务并合并结果。分割的子任务分别放在双端队列里,然后几个启动线程分别从双端队列里获取任务执行。子任务执行完的结果都统一放在一个队列里,启动一个线程从队列里拿数据,然后合并这些数据。
public class...
分类:
编程语言 时间:
2015-06-02 00:28:15
阅读次数:
372
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。设两个栈为stack1,stack2;1:首先想到最简单的方法:是入栈时将数据压入stack1,出栈时将stack1中的元素出栈压入stack2,在将stack2栈顶元素弹出,再将stack2中的剩余元素重新...
分类:
其他好文 时间:
2015-05-31 16:35:29
阅读次数:
120
前面分析了`ngx_array_t`数组,现在看一下`ngx_queue`队列的实现。 ## ngx_queue队列 `ngx_queue_t`是一个双向链表,实现了一个队列的操作逻辑。但是它的结构只进行指针的操作,因而在定义自己的节点时,需要自己...
分类:
其他好文 时间:
2015-05-31 12:34:06
阅读次数:
125
【题目】用两个栈实现一个队列,分别完成在队列尾部插入结点和在队列头部删除结点的功能。【分析】假设两个栈,栈1和栈2,来实现队列,栈1用来入队,栈2用来出队。
入队时,将元素全部压入栈1;
出队时,如果栈2不为空,就直接pop栈2,否则,就将栈1的所有元素pop到栈1里,再把栈2栈顶弹出。
由图所示,abcdef依次入队,压栈,出队时先将元素从s1弹出,压入s2,从s2出栈实现出队,即使后面再有...
分类:
其他好文 时间:
2015-05-27 10:23:41
阅读次数:
166
一、TC原理介绍 Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。 Linux流量控制的基本原理如下图所示。 ? ? 接收包从输入接口...
分类:
系统相关 时间:
2015-05-26 16:42:28
阅读次数:
176
进程调度的任务
保存处理机信息
按某种算法选取进程
把处理器分配给进程
进程调度机制
排队器。把就绪进程排成一个或者几个队列
分派器。把进程从就绪队列中取出来,然后把处理机给他
上下文切换器。保存上一个进程的信息,分配下一个进程的信息
进程调度的方式
非抢占式
抢占式
进程调度算法轮转调度算法把就绪进程排成一个队列,把CPU分配给队首进程,执行一定的时间,运行完毕就分配给另一个新的队首进程,每隔一定...
分类:
编程语言 时间:
2015-05-24 20:28:18
阅读次数:
203
inux应用开发-消息队列
一 消息队列
用于linux系统进程间通信的一个队列
二 使用的主要函数(详细内容参看系统man手册)
1 得到消息队列号
int msgget(key_t key, int flags)
2 发送消息
int msgsnd(int msgid, const void *msgp, size_t msgsz, int msgflag)
3 接...
分类:
系统相关 时间:
2015-05-18 18:57:35
阅读次数:
210
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution
{
public:
void push(int node) {
stack1.push(node);
} int pop() {
if(stack2.empty()) {//第二个栈为空时
while(!stack1.empty()) {...
分类:
其他好文 时间:
2015-05-18 14:51:02
阅读次数:
102