#include <bee2/core/mt.h>
static size_t _once;
static bool_t _inited;
static void init()
{
_inited = TRUE;
}
bool_t mtTest()
{
mt_mtx_t mtx[1];
size_t ctr[1] = { SIZE_0 };
if (!mtMtxCreate(mtx))
return FALSE;
mtMtxLock(mtx);
mtMtxUnlock(mtx);
mtMtxClose(mtx);
mtAtomicIncr(ctr);
mtAtomicIncr(ctr);
mtAtomicDecr(ctr);
if (mtAtomicCmpSwap(ctr, 1, 0) != 1 || *ctr != SIZE_0)
return FALSE;
if (!mtCallOnce(&_once, init) || !_inited)
return FALSE;
if (!mtCallOnce(&_once, init) || !_inited)
return FALSE;
return TRUE;
}