mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //  (C) Copyright John Maddock 2001. 
 | |
| //  Use, modification and distribution are subject to the 
 | |
| //  Boost Software License, Version 1.0. (See accompanying file 
 | |
| //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | |
| 
 | |
| //  See http://www.boost.org/libs/config for most recent version.
 | |
| 
 | |
| //  MACRO:         BOOST_HAS_PTHREADS
 | |
| //  TITLE:         POSIX Threads
 | |
| //  DESCRIPTION:   The platform supports POSIX style threads.
 | |
| 
 | |
| #include <pthread.h>
 | |
| 
 | |
| 
 | |
| namespace boost_has_pthreads{
 | |
| 
 | |
| extern "C" void* thread_proc(void* arg)
 | |
| {
 | |
|    return arg;
 | |
| }
 | |
| 
 | |
| int test()
 | |
| {
 | |
|    pthread_mutex_t mut;
 | |
|    int result = pthread_mutex_init(&mut, 0);
 | |
|    if(0 == result)
 | |
|    {
 | |
|       //
 | |
|       // Failure to be able to create and use a mutex
 | |
|       // is always a failure, even if the pthread
 | |
|       // library is just a non-functioning stub.
 | |
|       //
 | |
|       result |= pthread_mutex_lock(&mut);
 | |
|       result |= pthread_mutex_unlock(&mut);
 | |
|       result |= pthread_mutex_trylock(&mut);
 | |
|       result |= pthread_mutex_unlock(&mut);
 | |
|       result |= pthread_mutex_destroy(&mut);
 | |
|       //
 | |
|       // Try and create a thread, this is allowed
 | |
|       // to fail, in case we are linking to a pthread
 | |
|       // "stub" library.
 | |
|       //
 | |
|       pthread_t t;
 | |
|       int r = pthread_create(&t, 0, &thread_proc, 0);
 | |
|       // result |= r;
 | |
|       if(r == 0)
 | |
|       {
 | |
|          //
 | |
|          // If we can create a thread, then we must be able to join to it:
 | |
|          //
 | |
|          void* arg;
 | |
|          r = pthread_join(t, &arg);
 | |
|          result |= r;
 | |
|       }
 | |
|    }
 | |
|    return result;
 | |
| }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |