iOS中实现多线程技术有很多方法。这里说说使用NSCondition实现多线程同步的问题,也就是解决生产者消费者问题(如收发同步等等)。问题流程如下: 消费者取得锁,取产品,如果没有,则wait,这时会释放锁,直到有线程唤醒它去消费产品; 生产者制造产品,首先也要取得锁,然后生产,再发signal,这样可唤醒wait的消费者。这里需要注意wait和signal的问题: 1: 其实...
分类:
编程语言 时间:
2014-11-12 13:47:01
阅读次数:
209
用户进程,在用户态可以被直接 kill 。
用户进程陷入内核,在内核态进入死循环:
1. 循环体中有 msleep_interruptible ,进程状态为S,即可中断的睡眠状态,kill 命令不能杀死进程。
2. 循环体中有 msleep ,进程状态为D,即不可中断的睡眠状态,kill 命令不能杀死进程。
3. 循环体中无 sleep ,进程状态为R,即可执行状态,kill 命令不能杀死...
分类:
其他好文 时间:
2014-11-11 16:46:08
阅读次数:
220
使用NSCondition对象来控制进程的同步,通过NSCondition对象的操作实现进程间的通信。NSCondition也实现了NSLocking协议,因此也可以调用lock、 unlock来实现线程的同步。NSCondition类提供以下3个方法:
wait——该方法让线程一直等待;signal——唤醒在此NSCondition对象上等待的单个线程;broadcast——唤...
分类:
其他好文 时间:
2014-11-11 12:45:44
阅读次数:
194
吃力的讲完boost::signals的ppt,然后接着就是做练习题。通过讲ppt,发现有一句话说的真好:你自己知道是一回事,你能给别人讲明白又是另外一回事。真的有些东西你自己理解,但是用语言去很难表达,是不是用语言难以表达暴露出自己对所理解的东西不是真正的理解?。。。。orz,不过讲完ppt之后,真的对boost::singals的理解又加深一层。好了废话不多说了,现在来看两个习题(ppt的内容...
分类:
其他好文 时间:
2014-11-10 12:06:38
阅读次数:
280
alarm(设置信号传送闹钟)相关函数signal,sleep表头文件#include定义函数unsigned int alarm(unsigned int seconds);函数说明alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数second....
分类:
其他好文 时间:
2014-11-10 06:25:42
阅读次数:
291
Condition另一种应用。
ondition是Locks锁下的另一种线程通信之间唤醒、阻塞的实现。它下面的await,和signal能够实现Object下的wait,notify和notifyAll的全部功能,除此之外改监视器和已绑定到每个条件,可以实现多条件的监听。Condition实质是被绑定到一个锁上,腰围特定的Lock实例获得Condition,即用 newCondition()方法。
Condition下的await()相对于Object下的wait(); 阻塞或中断之前状况,让其处于等待状态...
分类:
编程语言 时间:
2014-11-09 14:00:48
阅读次数:
142
Condition是Locks锁下的另一种线程通信之间唤醒、阻塞的实现。它下面的await,和signal能够实现Object下的wait,notify和notifyAll的全部功能,除此之外改监视器和已绑定到每个条件,可以实现多条件的监听。Condition实质是被绑定到一个锁上,腰围特定的Lock实例获得Condition,即用 newCondition()方法。
Condition下的aw...
分类:
编程语言 时间:
2014-11-09 12:40:03
阅读次数:
272
============问题描述============ 这个问题在网上查找了较多的资料首先这是一个底层的错误有人说这个是因为多线程互斥的问题,要加synchronized有人说是因为jni问题不过都没有解决我的问题,我发觉很多人都提到个问题就是在2.x的系统就没有问题,放到4.x的系统就有问题了我...
分类:
其他好文 时间:
2014-11-08 15:02:33
阅读次数:
157
//这个程序可以产生僵尸进程#include #include #include #include#includeint main(int argc , char **argv){ //signal(SIGCHLD, SIG_IGN); 如果将这行代码加上将不会产生僵尸进程 int id; id.....
分类:
系统相关 时间:
2014-11-06 14:26:03
阅读次数:
252
#include #include #include#includeint main(void) { //signal(SIGCHLD, SIG_IGN); int i=0; printf("i son/pa ppid pid fpid\n"); //ppid指当前...
分类:
系统相关 时间:
2014-11-06 14:25:59
阅读次数:
225