Chinaunix首页 | 论坛 | 博客
  • 博客访问: 369615
  • 博文数量: 53
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 1143
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-14 11:53
文章分类

全部博文(53)

文章存档

2011年(1)

2008年(52)

我的朋友

分类:

2008-09-22 20:01:28

/* includes */
#include "vxWorks.h"
#include "taskLib.h"
#include "sysLib.h"

int tid;

/* task function */
void myFunc(void)
{
    int i;
    printf("Hello, I am task %d\n", taskIdSelf()); /* Print task Id */
    for (i = 0; i < 10; i++)
    {
        printf("%d ", i);
        taskDelay(sysClkRateGet() / 2);
    }
}

/* reset task */
void resetMyTask(void)
{
    taskDelay(sysClkRateGet() *3);
    printf("my task will be reseted\n");
    taskRestart(tid);
}

/* user entry */
void user_start()
{
    printf("ready to begin new tasks\n");
    tid = taskSpawn("myTask", 90, 0x100, 2000, (FUNCPTR) myFunc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    taskSpawn("resetMyTask", 90, 0x100, 2000, (FUNCPTR)resetMyTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
}

运行输出:
8 9 Hello, I am task 15700472
0 1 2 3 4 5 my task will be reseted
Hello, I am task 15700472
0 1 2 3 4 5 6 7 8 9
程序运行3秒后resetMyTask启动,它复位了myTask,因此myTask被重新执行,“Hello, I am task 17753664”以及“0 1 2 3 4 5”被再次输出。


我们可以使用taskRestart()函数重新启动一个任务,不管任务当前处于什么状态,它都会被重新开始。该API的原型是:
extern STATUS taskRestart (int tid);

阅读(2376) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~