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
|
{
Forbid();
@try {
if (condition->waitingTasks == NULL)
return true;
Signal(condition->waitingTasks->task,
1 << condition->waitingTasks->sigBit);
condition->waitingTasks = condition->waitingTasks->next;
} @finally {
Permit();
}
return true;
}
bool
of_condition_broadcast(of_condition_t *condition)
{
Forbid();
@try {
if (condition->waitingTasks == NULL)
return true;
while (condition->waitingTasks != NULL) {
Signal(condition->waitingTasks->task,
1 << condition->waitingTasks->sigBit);
condition->waitingTasks = condition->waitingTasks->next;
}
} @finally {
Permit();
}
|
|
|
|
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
|
{
Forbid();
@try {
if (condition->waitingTasks == NULL)
return true;
Signal(condition->waitingTasks->task,
(1ul << condition->waitingTasks->sigBit));
condition->waitingTasks = condition->waitingTasks->next;
} @finally {
Permit();
}
return true;
}
bool
of_condition_broadcast(of_condition_t *condition)
{
Forbid();
@try {
if (condition->waitingTasks == NULL)
return true;
while (condition->waitingTasks != NULL) {
Signal(condition->waitingTasks->task,
(1ul << condition->waitingTasks->sigBit));
condition->waitingTasks = condition->waitingTasks->next;
}
} @finally {
Permit();
}
|