我们的常用的系统中,程序的工作通常是有事件驱动和消息驱动两种方式,在Android系统中,Java应用程序是靠消息驱动来工作的。
消息驱动的原理就是:
1. 有一个消息队列,可以往这个队列中投递消息;
2. 有一个消息循环,不断从消息队列中取出消息,然后进行处理。
在Android中通过Looper来封装消息循环,同时在其中封装了一个消息队列MessageQueue。
另外Andro...
分类:
移动开发 时间:
2014-05-22 08:20:57
阅读次数:
253
1. Unix IPC(InterProcess
Communication)同一主机的各个进程间的IPC:管道、FIFO、消息队列、信号量、共享存储器不同主机上的各个进程间IPC:socket套接字2.
管道管道进行IPC有两个局限:(1) 半双工,即数据只能在一个方向上流动(2) 只能在具有公共...
分类:
其他好文 时间:
2014-05-21 23:03:50
阅读次数:
394
消息队列:
消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法
每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值
消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)...
分类:
其他好文 时间:
2014-05-20 15:02:25
阅读次数:
284
如图所示首先来看本地通讯的情况,应用程序A和应用程序B运行于同一系统A,它们之间可以借助消息队列技术进行彼此的通讯:应用程序A向队列1发送一条信息,而当应用程序B需要时就可以得到该信息。其次是远程通讯的情况,如果信息传输的目标改为在系统B上的应用程序C,这种变化不会对应用程序A产生影响,应用程序A向...
分类:
其他好文 时间:
2014-05-19 07:05:41
阅读次数:
1342
一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式。利用redis这两种场景的消息队列都能够实现。定义:生产者消费者模式:生产者生产消息放到队列里,多个消费者同时监听队列,谁先抢到消息谁就会从队列中取走消息;即对于每个消息只能被最多一个消费者拥有。发布者订阅者模式:发布者生...
分类:
其他好文 时间:
2014-05-19 06:59:46
阅读次数:
446
平台:VS2010版本:1.04我们先看看消息队列的数据结构:typedefstructRAW_QUEUE
{
RAW_COMMON_BLOCK_OBJECTcommon_block_obj;
RAW_MSG_Qmsg_q;
RAW_VOID(*queue_send_notify)(structRAW_QUEUE*queue_ptr);
}RAW_QUEUE;RAW_MSG_Q:typedefstructRAW_MSG_Q{
RAW_VOID**queue_sta..
分类:
其他好文 时间:
2014-05-15 08:35:51
阅读次数:
318
进程间的通信(2)
有三种IPC我们称为XSI IPC,即消息队列、信号量以及共享存储器,它们之间有很多相似之处。
标识符和键
每个内核的IPC结构(消息队列、信号量或共享存储段)都用一个非负整数的标识符加以引用。例如,为了对一个消息队列发送或取消息,只需要知道其队列标识符。与文件描述符不同,IPC标识符不是小的整数。当一个IPC结构被创建,以后被删除时,与这种结果相关的标识符连续加1,知道...
分类:
系统相关 时间:
2014-05-15 07:16:02
阅读次数:
454
在需要并行化处理数据的时候,采用消息队列通讯的方式来协作,比采用共享状态的方式要好的多。Erlang ,Go
都使用这一手段来让并行任务之间协同工作。最近读完了ZeroMQ的Guide。写的很不错。前几年一直有做类似的工作,但是自己总结的不好。而 ZeroMQ
把消息通讯方面的模式总结的很不错。Ze...
分类:
其他好文 时间:
2014-05-14 09:48:48
阅读次数:
256
在使用消息队列时,调用#include #include #include #include
#include #include struct mymsg{ long mytype; char even[32];};#define VALUE
(key_t)0x1fffint main(){ ...
分类:
系统相关 时间:
2014-05-14 00:48:02
阅读次数:
487