非嵌入式系统的RTOS邮箱示例

时间:2015-05-22 14:20:30

标签: c multithreading rtos

我想在带有VS2013的Windows 8中编写一个简单的C控制台应用程序。

对于线程间通信,我必须使用这样的邮箱实现:

#include <stdio.h> 
#include <Rtk32.h> 

RTKMailbox Box; 

void RTKAPI TaskA(void * P) 
{ 
   int i; 

   printf("Task A: waiting at mailbox\n"); 
   RTKGet(Box, &i); 
   printf("Task A: have received number %i\n", i); 
} 

void main(void) 
{ 
   int i; 

   printf("\n"); 
   RTKernelInit(3); 
   Box = RTKCreateMailbox(sizeof(int), 1, "Test Box"); 
   printf("Main  : creating task A\n"); 
   RTKCreateThread(TaskA, 4, 0, 0, NULL, "Task A"); 
   printf("Main  : please enter a number: "); 
   fflush(stdin); 
   scanf("%i", &i); 
   RTKPut(Box, &i); 
   printf("Main  : done.\n"); 
}

Mailbox

是否存在非嵌入式系统的库或最佳方式。

1 个答案:

答案 0 :(得分:0)

我不确定某个库,但是我创建了一个基于Windows的多线程文件复制控制台示例程序,其中一个线程读取,另一个写入,使用互斥锁和semaphaores之上的fifo链表消息系统。消息传递函数是GetNode()和PutNode(),并与列表节点一起使用。可以添加另一层功能来实现具有ReceiveMessage()和SendMessage()的复制接口之类的邮箱。链表可以用圆形数组替换,但链表允许可变数量的消息。我已经为多线程嵌入式系统和旧的多线程迷你计算机内核使用了类似的链接列出的消息传递接口。 mtcopy.zip