Changeset 3989
- Timestamp:
- 04/08/05 11:03:21
- Files:
-
- OpenThreads/branches/Usleep/include/OpenThreads/Thread (modified) (1 diff)
- OpenThreads/branches/Usleep/pthread_src/PThread.c++ (modified) (1 diff)
- OpenThreads/branches/Usleep/sproc_src/SprocThread.c++ (modified) (1 diff)
- OpenThreads/branches/Usleep/win32_src/Win32Thread.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
OpenThreads/branches/Usleep/include/OpenThreads/Thread
r3332 r3989 329 329 int setProcessorAffinity( unsigned int cpunum ); 330 330 331 /** usleep method. This is not strictly thread API but is used 332 * so often with threads. It's basically UNIX usleep. Parameter is 333 * number of microseconds we current thread to sleep. Returns 0 on 334 * succes, non-zero on failure (UNIX errno or GetLastError() will give 335 * detailed description. 336 */ 337 static int usleep( unsigned int microsec); 338 331 339 private: 332 340 OpenThreads/branches/Usleep/pthread_src/PThread.c++
r3335 r3989 833 833 834 834 } 835 836 // Description: sleep 837 // 838 // Use: public 839 // 840 int Thread::usleep(unsigned int microsec) 841 { 842 return ::usleep(microsec); 843 } OpenThreads/branches/Usleep/sproc_src/SprocThread.c++
r2887 r3989 753 753 } 754 754 755 //----------------------------------------------------------------------------- 756 // Description: sleep 757 // 758 // Use: public 759 // 760 int Thread::usleep(unsigned int microsec) 761 { 762 return ::usleep(microsec); 763 } 764 755 765 static void sproc_dead_child_sig_handler(int sigid) { 756 766 OpenThreads/branches/Usleep/win32_src/Win32Thread.cpp
r3341 r3989 602 602 int SwitchToThread (void) 603 603 { 604 Sleep(10);604 ::Sleep(10); 605 605 return 0; 606 606 }; … … 612 612 } 613 613 614 int Thread::usleep(unsigned int microsec) 615 { 616 #if _WIN32_WINNT < 0x0400 // simulate 617 ::Sleep(microsec/1000); 618 return 0; 619 #else 620 HandleHolder sleepTimer(CreateWaitableTimer(NULL, TRUE, NULL)); 621 622 if( !sleepTimer ) 623 return -1; 624 625 LARGE_INTEGER t; 626 627 t.QuadPart= -(LONGLONG)microsec*10; // in 100ns units 628 // negative sign means relative, 629 630 if (!SetWaitableTimer(sleepTimer.get(), &t, 0, NULL, NULL, 0)) 631 { 632 return -1; 633 } 634 635 // Wait for the timer. 636 if (WaitForSingleObject(sleepTimer.get(), INFINITE) != WAIT_OBJECT_0) 637 { 638 return -1; 639 } 640 return 0; 641 #endif 642 }
