📄 anagram.c
字号:
/* anagram.c - multitask string permutations demo */#include "vxWorks.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "taskLib.h"#include "semLib.h"#include "sysLib.h"#include "wvLib.h"#define ANAGRAM_MUTEX_OPTS SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFEtypedef struct anagramBase { SEM_ID mutex; char * string; int length; } ANAGRAM_BASE;LOCAL ANAGRAM_BASE anagram;int i = 0; /* count of number of modifications so far */STATUS anagramInit ( char * str ) { /* Only create mutex if it hasn't been done yet...*/ if (anagram.mutex == NULL) if ((anagram.mutex = semMCreate (ANAGRAM_MUTEX_OPTS)) == NULL) return ERROR; if (str == NULL || strlen(str) == 0) return ERROR; /* Save string and length atomically */ semTake (anagram.mutex, WAIT_FOREVER); anagram.string = str; anagram.length = strlen (str); semGive (anagram.mutex); printf ("\n\n"); return OK; }void anagramIt ( int delayTicks /* Zero for default 1/4 second */ ) { int i1, i2; char temp; if (delayTicks <= 0) delayTicks = sysClkRateGet(); FOREVER { if (semTake (anagram.mutex, WAIT_FOREVER) == ERROR) return; i1 = rand() % anagram.length; i2 = rand() % anagram.length; temp = anagram.string[i1]; anagram.string[i1] = anagram.string[i2]; anagram.string[i2] = temp; i++; printf ("(%s) '%s'\n",taskName(0), anagram.string); semGive (anagram.mutex); taskDelay (delayTicks); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -