📄 semm.c
字号:
#include "vxWorks.h"#include "semLib.h"SEM_ID semM_id;/* SEM_Q_FIFO (0x0) SEM_Q_PRIORITY (0x1) SEM_DELETE_SAFE (0x4) SEM_INVERSION_SAFE (0x8) SEM_EVENTSEND_ERR_NOTIFY (0x10)*/void semMTask(SEM_ID semId){ FOREVER { printf("[%s] task is waiting for a MUTEX semaphore... -- loop\n\n",taskName(0)); if(semTake(semId,WAIT_FOREVER)==ERROR) { printErr("semTAKE failed\n"); } else { printf("[%s] task TAKEs a semaphore. semaphore owner!!!\n",taskName(0)); printf("=====>>> I'm doing something!!!!!!!!!!!!!!!!\n"); taskDelay(300); semGive(semM_id); printf("=====>>> I have done!!. [%s] task GIVEs a semaphore...\n",taskName(0)); } }}void testM(){ semM_id = semMCreate(SEM_Q_PRIORITY); printf("Mutex Semphore created!\n"); printf("semM_id = 0x%8x \n",semM_id); taskSpawn("semMTask1",100,0,1000,semMTask,semM_id,2,3,4,5,6,7,8,9,0); taskSpawn("semMTask2",100,0,1000,semMTask,semM_id,2,3,4,5,6,7,8,9,0);}void giveM(){ semMGiveForce(semM_id);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -