stafthread.cpp

来自「Software Testing Automation Framework (S」· C++ 代码 · 共 79 行

CPP
79
字号
/*****************************************************************************//* Software Testing Automation Framework (STAF)                              *//* (C) Copyright IBM Corp. 2001                                              *//*                                                                           *//* This software is licensed under the Common Public License (CPL) V1.0.     *//*****************************************************************************/#include "STAFOSTypes.h"#include "STAFThread.h"#include <stdlib.h>unsigned int STAFThreadStart(STAFThreadID_t *threadID,    STAFThreadFunctionReturn_t (SYSLINK *theFunc)(STAFThreadFunctionData_t),    STAFThreadFunctionData_t theData, unsigned int flags, unsigned int *osRC){    return _beginthread(theFunc, theData, 0, threadID) == 0;}STAFThreadID_t STAFThreadCurrentThreadID(){    PTIB ptib;    PPIB ppib;    APIRET rc = DosGetInfoBlocks(&ptib, &ppib);    return rc ? 0 : ptib->tib_ptib2->tib2_ultid;}unsigned int STAFThreadSleepCurrentThread(unsigned int milliseconds,                                          unsigned int *osRC){    APIRET rc = DosSleep(milliseconds);    if (!rc && osRC) *osRC = rc;    return rc ? 1 : 0;}// XXX: Need to find a better way to do thisstatic bool sThreadSafeMutexInited = false;static HMTX sThreadSafeMutex = 0;STAFThreadSafeScalar_t STAFThreadSafeIncrement(STAFThreadSafeScalar_t *ptr){    if (sThreadSafeMutexInited == false)    {        DosEnterCritSec();        if (sThreadSafeMutexInited == false)            DosCreateMutexSem(0, &sThreadSafeMutex, 0, 0);        DosExitCritSec();    }    DosRequestMutexSem(sThreadSafeMutex, SEM_INDEFINITE_WAIT);    STAFThreadSafeScalar_t retval = ++(*ptr);    DosReleaseMutexSem(sThreadSafeMutex);    return retval;}STAFThreadSafeScalar_t STAFThreadSafeDecrement(STAFThreadSafeScalar_t *ptr){    if (sThreadSafeMutexInited == false)    {        DosEnterCritSec();        if (sThreadSafeMutexInited == false)            DosCreateMutexSem(0, &sThreadSafeMutex, 0, 0);        DosExitCritSec();    }    DosRequestMutexSem(sThreadSafeMutex, SEM_INDEFINITE_WAIT);    STAFThreadSafeScalar_t retval = --(*ptr);    DosReleaseMutexSem(sThreadSafeMutex);    return retval;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?