semc.c
来自「在TORNADO下写的基于VXWORKS的多信号量通信的源代码」· C语言 代码 · 共 60 行
C
60 行
#include "vxWorks.h"
#include "semLib.h"
SEM_ID semC_id;
/*
SEM_Q_FIFO (0x0)
SEM_Q_PRIORITY (0x1)
SEM_DELETE_SAFE (0x4)
SEM_INVERSION_SAFE (0x8)
SEM_EVENTSEND_ERR_NOTIFY (0x10)
*/
#define COUNT_NUM 5
int nCount = COUNT_NUM;
void semCTask(SEM_ID semId)
{
FOREVER
{
printf("[%s] task is waiting for a COUNT semaphore... -- count = %d \n",taskName(0),nCount);
if(semTake(semId,WAIT_FOREVER)==ERROR)
{
printErr("semTake failed\n");
}
else
{
nCount--;
printf("[%s] task TAKEs a semaphore!!! Doing SOMETHING...\n",taskName(0));
taskDelay(300);
printf("[%s] ============>>> Done!!! \n\n",taskName(0));
}
}
}
void testC()
{
semC_id = semCCreate(SEM_Q_PRIORITY, COUNT_NUM);
printf("========== Counting semphore created!\n");
printf("semC_id = 0x%8x \n",semC_id);
nCount = COUNT_NUM;
taskSpawn("semCTask1",100,0,1000,semCTask,semC_id,2,3,4,5,6,7,8,9,0);
taskSpawn("semCTask2",100,0,1000,semCTask,semC_id,2,3,4,5,6,7,8,9,0);
taskSpawn("semCTask3",100,0,1000,semCTask,semC_id,2,3,4,5,6,7,8,9,0);
taskSpawn("semCTask4",100,0,1000,semCTask,semC_id,2,3,4,5,6,7,8,9,0);
taskSpawn("semCTask5",100,0,1000,semCTask,semC_id,2,3,4,5,6,7,8,9,0);
taskSpawn("semCTask6",100,0,1000,semCTask,semC_id,2,3,4,5,6,7,8,9,0);
taskSpawn("semCTask7",100,0,1000,semCTask,semC_id,2,3,4,5,6,7,8,9,0);
taskSpawn("semCTask8",100,0,1000,semCTask,semC_id,2,3,4,5,6,7,8,9,0);
}
void giveC()
{
semGive(semC_id);
nCount++;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?