⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 anagram.c

📁 基于嵌入式实时开发系统Tornado 2的工具使用内部培训资料
💻 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 + -