一个小队去登山,每位队员登山的速度不同。山上有几个集合点,在每一集合点处,先到达的队员只有等后面的队员全部到达集合点后才能继续向下一个集合点出发。JDK1.5提供的CyclicBarrier模拟了这种情况。每一个线程相当于一个登山队员,CyclicBarrier相当于山上的集合点。只有等所有线程都执...
分类:
编程语言 时间:
2014-05-01 11:34:29
阅读次数:
388
JDK1.5提供了一个计数信号量Semaphore类。Semaphore
通常用于限制可以访问某些资源(物理或逻辑的)的线程数目,并提供了同步机制。Semaphore提供了两个构造器来创建对象:1)Semaphore(int
permits):创建具有给定的许可数和非公平的公平设置的Semaphor...
分类:
编程语言 时间:
2014-05-01 11:33:50
阅读次数:
431
windows下面可以主线程while loop接受input;但是觉得很丑。
linux没办法这样,可以用注册信号的办法。实现起来也不难:
#include "stdio.h"
#include "unistd.h"
#include "signal.h"
#include "error.h"
volatile bool isStop = false;
static void handl...
分类:
其他好文 时间:
2014-04-29 13:42:21
阅读次数:
418
自旋锁和互斥锁是多线程编程中的两个重要概念。他们都能用来锁定一些共享资源,以阻止影响数据一致性的并发访问。但是他们之间确实存在区别,那么这些区别是什么?
1 理论
理论上,当一个线程试图获取一个被锁定的互斥锁时,该操作会失败然后该线程会进入睡眠,这样就能马上让另一个线程运行。当持有互斥锁的线程释放该锁之后,进入睡眠状态的线程就会被唤醒。但是,当一个线程试图获取一个自旋锁而没有成功时,该线...
分类:
其他好文 时间:
2014-04-29 13:31:21
阅读次数:
317
基础篇
objective-c基础教程
iphone 开发秘籍
进阶篇
iOS 6编程实战
Objective-C 高级编程:iOS与OS X多线程和内存管理
Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法...
分类:
移动开发 时间:
2014-04-29 13:25:21
阅读次数:
402
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。
最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。
1.
计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。
2.
假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。...
分类:
编程语言 时间:
2014-04-29 13:17:20
阅读次数:
276
小米面试
我:
一面:
数据结构+算法:
斐波那契数列:非递归-迭代
1MB内存,外存-100W整数,排序,O(1)-位图法
设计模式:
代理模式:OO
C++:虚函数表
二面:
数据结构+算法:
快排
二叉树遍历
设计模式:
单例模式-多线程:
关系数据库的特性
进程和线程的区别
三面:
数据结构+算法:...
分类:
移动开发 时间:
2014-04-29 13:17:19
阅读次数:
606
进程的权限继承自创建进程用户和用户所属的用户组。用户有专用数据结构来表示权限—访问令牌(Access Token)。访问令牌包括两个部分:一个是令牌所表示的用户,包括用户标识符(SID),用户所属的用户组等;另一部分是“权限”(Privilege)。
在进程访问安全对象时,会用到SID。每个安全对象都有访问控制列表(ACL),ACL说明了哪些用户( SID)能访问本对象,哪些不能,以及能进行哪种...
分类:
其他好文 时间:
2014-04-29 13:13:21
阅读次数:
346
1.jvm 内存结构
1)程序计数器
较小的内存区域,可以看作是当前线程所执行的字节码的行号指示器;每条线程独立;
2)java虚拟机栈
描述java方法执行的内存模型,即每个方法在执行的同时都会创建一个栈帧用户存储局部变量表、操作数栈、动态链接、方法出口等信息;即一个方法的调用直至完成的过程对应着一个栈帧的入栈到出栈的过程。同样是线程私有;
3)本地方法栈
对应虚拟机使用的nativ...
分类:
编程语言 时间:
2014-04-27 22:12:22
阅读次数:
440
Cobar启动完成,监听特定端口。整个认证的流程图:NIOAcceptor类继承自Thread类,该类的对象会以线程的方式运行,进行连接的监听。NIOAcceptor启动的初始化过程如下:1 、打开一个selector,获取一个ServerSocketChannel对象,对该对象的socket绑定特定的监听端口,并设置该channel为非阻塞模式,然后想selector注册该channel,绑定感...
分类:
数据库 时间:
2014-04-27 21:47:07
阅读次数:
462