Annotation of parser3/src/targets/apache13/pa_threads.C, revision 1.4
1.1 parser 1: /** @file
2: Parser: Mutex realization class.
3:
4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.3 paf 5: Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
1.1 parser 6:
1.4 ! paf 7: $Id: pa_threads.C,v 1.3 2001/11/05 11:46:30 paf Exp $
1.1 parser 8: */
9:
10: #include "pa_threads.h"
11:
12: Mutex global_mutex;
13:
14: #include "ap_config.h"
15: // defined in ap_config
16: #ifdef MULTITHREAD
17: #include "multithread.h"
18:
1.2 paf 19: const bool parser_multithreaded=true;
20:
1.4 ! paf 21: pa_thread_t pa_get_thread_id() {
! 22: return static_cast<pa_thread_t>(
! 23: #ifdef WIN32
! 24: GetThreadID()
! 25: #else
! 26: # ifdef to-do-PTHREADS
! 27: pthread_self()
! 28: # else
! 29: # ifdef to-do-SOLARIS_THREADS
! 30: thr_self()
! 31: # else
! 32: # error there must be some get_thread_id function
! 33: # endif
! 34: # endif
! 35: #endif
! 36: );
! 37: }
! 38:
1.1 parser 39: Mutex::Mutex() :
40: handle(reinterpret_cast<uint>(ap_create_mutex(0))) {
41: }
42:
43: Mutex::~Mutex() {
44: ap_destroy_mutex(reinterpret_cast<mutex *>(handle));
45: }
46:
47: void Mutex::acquire() {
48: ap_acquire_mutex(reinterpret_cast<mutex *>(handle));
49: }
50:
51: void Mutex::release() {
52: ap_release_mutex(reinterpret_cast<mutex *>(handle));
53: }
54:
55: #else
1.2 paf 56:
57: const bool parser_multithreaded=false;
1.4 ! paf 58:
! 59: pa_thread_t pa_get_thread_id() { return 0; }
1.1 parser 60:
61: Mutex::Mutex() {}
62: Mutex::~Mutex() {}
63: void Mutex::acquire() {}
64: void Mutex::release() {}
65:
66: #endif
E-mail: