一个简单的多任务程序

转载请注明原文链接,http://www.cnblogs.com/flyingcloude/p/6992048.html

vxworks 一个简单的模拟收发数据的多任务程序

#include "vxWorks.h"
#include "semLib.h"
#include "taskLib.h"
#include "stdio.h"
#include "stdlib.h"
#include "sysLib.h"

#define STACK_SIZE 2000    /* Task Stack‘s size = 2000byte */

/*global variable*/
SEM_ID dataSemId;     /*synchronism semphore*/
int tidSend;        /*Send Task‘s Id*/
int tidReceive;        /*Receive Task‘s Id*/

/*function declaration*/
void progStart();
void taskSend();
void taskReceive();
void SendInit();
void ReceiveInit();
void progStop();

/******************************************************************
 *progStart - Start program
 *it is used to create "Send Task" and "Receive Task", and begin to run
 *Return: N/A
 ******************************************************************/

void progStart()
{
    /*create semphore*/
    dataSemId = semBCreate(SEM_Q_FIFO, SEM_EMPTY);

    /*create Task*/
    tidSend = taskSpawn("tSend", 200, 0, STACK_SIZE, (FUNCPTR)taskSend, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    tidReceive = taskSpawn("tReceive", 220, 0, STACK_SIZE, (FUNCPTR)taskReceive, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    return;
}

/*****************************************************************
 *taskSend - Send data
 *release semphore(dataSemId) every two second, used to simulate the receipt of data
 */
void taskSend()
{
    /*Send Task‘s init*/
    SendInit();

    /* main Loop*/
    while(true)
    {
        /*two second‘s delay*/
        taskDelay(sysClkRateGet() * 2);
        semGive(dataSemId);
    }
    return;
}

/****************************************************************
 *taskReceive - receive data
 *wait semphore(dataSemId)
 */

void taskReceive()
{
    /*Receive Task‘s init*/
    ReceiveInit();
    /*main Loop*/
    while(true)
    {
        /*wait semphore*/
        semTake(dataSemId, WAIT_FOREVER);
        printf("\nReceive a data");
    }
    return;
}

/****************************************************************
 *SendInit - init send Task
 */
void SendInit()
{
    printf("\nInitial Send Task");
    return;
}

/*****************************************************************
 *ReceiveInit - init Receive Task
 */
void ReceiveInit()
{
    printf("\nInitial Receive Task");
    return;
}

/****************************************************************
 *progStop - stop program
 *delete semphore,delete task, then stop program
 */
void progStop()
{
    /*delete semphore*/
    semDelete(dataSemId);

    /*delete task*/
    taskDelete(tidSend);
    taskDelete(tidReceive);

    printf("The End\n");
    return;
}

PS:
  tt():显示一个任务的函数栈的调用状态,参数为某个任务的name或者ID
  ts():挂起某个任务。参数为某个任务的name或者ID
  tr():恢复某个任务。参数为某个任务的name或者ID
  td():删除某个任务。参数为某个任务的name或者ID

  转载请注明原文链接,http://www.cnblogs.com/flyingcloude/p/6992048.html

时间: 2024-08-25 19:01:04

一个简单的多任务程序的相关文章

利用JSP编程技术实现一个简单的购物车程序

实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP中数据库编程方法: 二.实验要求 : 利用JSP编程技术实现一个简单的购物车程序,具体要求如下. (1)用JSP编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息. (2)编写一个JSP程序来处理用户提交的登录信息,如果用户名为本小组成员的名字且密码为对应的学号时,采用J

一个简单的Qt程序分析

本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button, SIGNA

通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1 1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与

一个简单的Java程序

一个.NET技术还是很菜的水平的猿人现在要去学习Java不知道是坏是好,无从得知啊! 不过在网上看了好多Java方面的简单例子,感觉Java还是蛮不错的么!不管以后怎么样啦,先开始自己的Java菜鸟之旅吧! 建立一个Java项目,建立一个属于自己的包,然后就开始自己的Java之旅... 创建的时候勾上这个生成main方法的选项,这个好像类似与我们.Net程序里控制台程序有木有.... 创建完成后就是这么一个样子,可以看到我们的包,还有给我们创建好自己的类,并且带了一个静态的main方法咋看就像.

理解计算机的工作方式——通过汇编一个简单的C程序并分析汇编代码

Author: 翁超平 Notice:原创作品转载请注明出处 See also:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  本文通过汇编一个简单的C程序,并分析汇编代码,来理解计算机是如何工作的.整个过程都在实验楼上完成,感兴趣的读者可以通过上面给出的课程链接自行动手学习.以下是实验过程和结果. 一.操作步骤 1.首先在通过vim程序建立main.c文件.代码如下: 图1 2.使用如下命令将main.c编

1.一个简单的OpenGL程序

一.OpenGL介绍 1.与C语言紧密结合. OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的. 如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单. 2.强大的可移植性. 微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机). 而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机.各种专

如何利用CEF3创建一个简单的应用程序 (Windows Platform)

1. 说明 这篇文章主要讲述如何利用CEF3来创建一个简单的应用程序,引用的是1535及以上版本中包含的 Cefsimple 项目例子.如果想知道关于CEF3更多的使用方法,可以去访问 GeneralUsage. 2. 开始 首先,根据自身所使用的开发平台,可以去 这里 下载对应的发布版本.针对这个教程,我们需要下载1750或者更新的版本.当前支持的平台有Windows, Linux和Mac OS X.每一个版本都包含了当在特定平台上编译特定版本CEF3时所需要的所有文件和资源.您可以通过包含在

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #include "ege.h" using namespace ege; #endif #inc

Python高级编程之生成器(Generator)与coroutine(四):一个简单的多任务系统

啊,终于要把这一个系列写完整了,好高兴啊 在前面的三篇文章中介绍了Python的Python的Generator和coroutine(协程)相关的编程技术,接下来这篇文章会用Python的coroutine技术实现一个简单的多任务的操作系统 代码如下,可看注释 1 #-*-coding:utf-8 -*- 2 ''' 3 用Python和coroutine实现一个简单的多任务系统 4 ''' 5 # ##Step 1:Define Tasks###########################