MCAPI学习笔记<二>——数据类型与属性定义

1.当数据到达目的endpoint后,将加入其维护的接收队列中,应用程序接收这些数据的时候对于不同的通信模式会有所不同。

channels模式将采用FIFO的方式接收。

messages模式将采用FIFO order perpriority level(优先级队列)的方式接收。

以上的FIFO队列都是限制大小的,当队列满了之后会返回错误代码或者直接阻塞。mcapi_endpoint_get/set_attribute()可用来查询或者控制给定endpoint的队列大小。

注:

l  如果应用程序在接收所有receivequeue数据之前终止了连接,那么在receive queue中的数据就会丢失。

l  直到使用mcapi_pktchan_release()来手动释放databuffer,MCAPI将会重复使用。

l  不管是哪种通信模式其函数都有阻塞与非阻塞两种模式,_i后缀用来表示非阻塞模式。

 

2.Buffer 管理

  在Buffer管理中MCAPI提供两种传输方式:MCAPImessages & MCAPI packet channels(区别之一就是是否面向连接)。

message方式的API提供”user-specifiedbuffer”通信接口:由程序员来规定buffer无需通过MCAPI 调用来分配和释放空间。

packet channels方式提供”system-specifiedbuffer”通信接口,接收方将会获得一个buffer data的地址,这个地址由当前正在运行的系统进行返回,对于packet channel来说由于接收方的buffer由系统分配,因此程序员必须调用mcapi_pktchan_release()

 

3.数据类型

为保证了MCAPI的可移植性以及与MCA的兼容性,其数据做了大量的typedef。其中以mca_开头的数据类型在mca.h中定义,整理如下:

 MCAPI学习笔记<二>——数据类型与属性定义_第1张图片

4.endpoint属性

MCAPI endpointattributes 提供对endpoint特性或者状态的访问。这些属性多以#define或者typedef在头文件(mcapi.h)中定义,具体实现时可设计为只读。一些endpoint attribute必须具备Channel兼容性,即对于一个已连接成功的Channel其两端的endpoint的该属性必须具备相同值。整理如下:

MCAPI学习笔记<二>——数据类型与属性定义_第2张图片

你可能感兴趣的:(多核,ipc,MCAPI)