1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
/* -*- C++ -*- */
// $Id$
// Token.i
ACE_INLINE int
ACE_Token::remove (void)
{
ACE_TRACE ("ACE_Token::remove");
// Don't have an implementation for this yet...
ACE_NOTSUP_RETURN (-1);
}
ACE_INLINE int
ACE_Token::tryacquire (void)
{
ACE_TRACE ("ACE_Token::tryacquire");
return this->shared_acquire
(0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::WRITE_TOKEN);
}
ACE_INLINE int
ACE_Token::waiters (void)
{
ACE_TRACE ("ACE_Token::waiters");
ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1);
int ret = this->waiters_;
return ret;
}
ACE_INLINE ACE_thread_t
ACE_Token::current_owner (void)
{
ACE_TRACE ("ACE_Token::current_owner");
ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, this->owner_);
return this->owner_;
}
ACE_INLINE int
ACE_Token::acquire_read (void)
{
ACE_TRACE ("ACE_Token::acquire_read");
return this->shared_acquire
(0, 0, 0, ACE_Token::READ_TOKEN);
}
ACE_INLINE int
ACE_Token::acquire_write (void)
{
ACE_TRACE ("ACE_Token::acquire_write");
return this->shared_acquire
(0, 0, 0, ACE_Token::WRITE_TOKEN);
}
ACE_INLINE int
ACE_Token::tryacquire_read (void)
{
ACE_TRACE ("ACE_Token::tryacquire_read");
return this->shared_acquire
(0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::READ_TOKEN);
}
ACE_INLINE int
ACE_Token::acquire_read (void (*sleep_hook_func)(void *),
void *arg,
ACE_Time_Value *timeout)
{
ACE_TRACE ("ACE_Token::acquire_read");
return this->shared_acquire (sleep_hook_func, arg, timeout, ACE_Token::READ_TOKEN);
}
ACE_INLINE int
ACE_Token::tryacquire_write (void)
{
ACE_TRACE ("ACE_Token::tryacquire_write");
return this->shared_acquire
(0, 0, (ACE_Time_Value *) &ACE_Time_Value::zero, ACE_Token::WRITE_TOKEN);
}
ACE_INLINE int
ACE_Token::tryacquire_write_upgrade (void)
{
ACE_TRACE ("ACE_Token::tryacquire_write_upgrade");
return 0;
}
ACE_INLINE int
ACE_Token::acquire_write (void (*sleep_hook_func)(void *),
void *arg,
ACE_Time_Value *timeout)
{
ACE_TRACE ("ACE_Token::acquire_write");
return this->shared_acquire (sleep_hook_func, arg, timeout, ACE_Token::WRITE_TOKEN);
}
ACE_INLINE int
ACE_Token::ACE_Token_Queue_Entry::wait (ACE_Time_Value *timeout, ACE_Thread_Mutex &lock)
{
#if defined (ACE_TOKEN_USES_SEMAPHORE)
lock.release ();
int retv = (timeout == 0 ?
this->cv_.acquire () :
this->cv_.acquire (*timeout));
lock.acquire ();
return retv;
#else
ACE_UNUSED_ARG (lock);
return this->cv_.wait (timeout);
#endif /* ACE_TOKEN_USES_SEMAPHORE */
}
ACE_INLINE int
ACE_Token::ACE_Token_Queue_Entry::signal (void)
{
return
#if defined (ACE_TOKEN_USES_SEMAPHORE)
this->cv_.release ();
#else
this->cv_.signal ();
#endif /* ACE_TOKEN_USES_SEMAPHORE */
}
|