📄 semc.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -