]> pd.if.org Git - pdclib/blob - platform/win32/functions/threads/mtx_trylock.c
PDCLib includes with quotes, not <>.
[pdclib] / platform / win32 / functions / threads / mtx_trylock.c
1 #ifndef REGTEST\r
2 #include <threads.h>\r
3 #include <windows.h>\r
4 \r
5 int mtx_trylock(mtx_t *mtx)\r
6 {\r
7     DWORD myId = GetCurrentThreadId();\r
8 \r
9     if(mtx->_ThreadId == (long) myId) {\r
10         mtx->_NestCount++;\r
11         return thrd_success;\r
12     }\r
13 \r
14     if(mtx->_ThreadId != 0)\r
15         return thrd_busy;\r
16 \r
17     LONG prev = InterlockedCompareExchange(&mtx->_ThreadId, myId, 0);\r
18     if(prev == 0)\r
19         return thrd_success;\r
20     else\r
21         return thrd_busy;\r
22 }\r
23 #endif\r
24 \r
25 #ifdef TEST\r
26 #include "_PDCLIB_test.h"\r
27 \r
28 int main( void )\r
29 {\r
30     return TEST_RESULTS;\r
31 }\r
32 \r
33 #endif