Advertisement
Guest User

XBasic win32 mutex

a guest
Oct 24th, 2014
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XBasic 0.86 KB | None | 0 0
  1. PROGRAM "foo"
  2.  
  3. IMPORT "kernel32.dec"
  4. IMPORT "xio"
  5. IMPORT "xsx"
  6.  
  7. CONSOLE
  8.  
  9. DECLARE FUNCTION Entry()
  10. DECLARE FUNCTION ULONG ThreadEntry(ULONG)
  11. DECLARE FUNCTION ULONG CriticalSection(msg$)
  12.  
  13. SHARED ULONG mutex
  14. SHARED ULONG data
  15.  
  16. ''******** MAIN PROGRAM ***********
  17.  
  18. FUNCTION Entry()
  19.     ULONG thread_id
  20.     SHARED ULONG mutex
  21.    
  22.     mutex = CreateMutexA(0, $$FALSE, 0)
  23.  
  24.     CreateThread(0, 0, &ThreadEntry(), 0, 0, &thread_id)
  25.    
  26.     DO
  27.         XstSleep(150)
  28.         CriticalSection("main")
  29.     LOOP
  30.    
  31. END FUNCTION
  32.  
  33. FUNCTION ULONG ThreadEntry(ULONG ptr)
  34.     DO
  35.         XstSleep(100)
  36.         CriticalSection("thread")
  37.     LOOP
  38.    
  39.     RETURN 0
  40. END FUNCTION
  41.  
  42. FUNCTION ULONG CriticalSection(msg$)
  43.     SHARED ULONG mutex
  44.     SHARED ULONG data
  45.    
  46.     WaitForSingleObject(mutex, $$INFINITE)
  47.     INC data
  48.     IF(data > 100000) THEN data = 0
  49.     PRINT msg$ + STR$(data)
  50.     ReleaseMutex(mutex)
  51. END FUNCTION
  52.  
  53. END PROGRAM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement