Nebula
Toggle main menu visibility
Loading...
Searching...
No Matches
linuxrendezvous.h
Go to the documentation of this file.
1
#pragma once
2
//------------------------------------------------------------------------------
11
#include "
core/types.h
"
12
#include <
semaphore.h
>
13
14
//------------------------------------------------------------------------------
15
namespace
Linux
16
{
17
class
LinuxRendezvous
18
{
19
public
:
21
LinuxRendezvous
();
23
~LinuxRendezvous
();
24
26
void
MasterArrive
();
28
void
SlaveArrive
();
29
30
private
:
31
sem_t
semMaster
;
32
sem_t
semSlave
;
33
};
34
35
//------------------------------------------------------------------------------
38
inline
39
LinuxRendezvous::LinuxRendezvous
()
40
{
41
int
res;
42
res = sem_init(&this->
semMaster
, 0, 0);
43
n_assert
(0 == res);
44
res = sem_init(&this->
semSlave
, 0, 0);
45
n_assert
(0 == res);
46
}
47
48
//------------------------------------------------------------------------------
51
inline
52
LinuxRendezvous::~LinuxRendezvous
()
53
{
54
sem_destroy(&this->
semMaster
);
55
sem_destroy(&this->
semSlave
);
56
}
57
58
//------------------------------------------------------------------------------
61
inline
void
62
LinuxRendezvous::MasterArrive
()
63
{
64
n_assert
(sem_post(&this->
semMaster
) == 0);
65
n_assert
(sem_wait(&this->
semSlave
) == 0);
66
}
67
68
//------------------------------------------------------------------------------
71
inline
void
72
LinuxRendezvous::SlaveArrive
()
73
{
74
n_assert
(sem_post(&this->
semSlave
) == 0);
75
n_assert
(sem_wait(&this->
semMaster
) == 0);
76
}
77
78
}
// namespace Linux
79
//------------------------------------------------------------------------------
Linux::LinuxRendezvous::LinuxRendezvous
LinuxRendezvous()
constructor
Definition
linuxrendezvous.h:39
Linux::LinuxRendezvous::semSlave
sem_t semSlave
Definition
linuxrendezvous.h:32
Linux::LinuxRendezvous::~LinuxRendezvous
~LinuxRendezvous()
destructor
Definition
linuxrendezvous.h:52
Linux::LinuxRendezvous::MasterArrive
void MasterArrive()
call for "master" thread
Definition
linuxrendezvous.h:62
Linux::LinuxRendezvous::semMaster
sem_t semMaster
Definition
linuxrendezvous.h:31
Linux::LinuxRendezvous::SlaveArrive
void SlaveArrive()
call for "slave" thread
Definition
linuxrendezvous.h:72
n_assert
#define n_assert(exp)
Definition
debug.h:50
Linux
Definition
linuxcompletioncounter.h:15
semaphore.h
A semaphore is an inter-GPU queue synchronization primitive.
types.h
code
foundation
threading
linux
linuxrendezvous.h
Generated on
for Nebula. Dark theme by
Tilen Majerle
. All rights reserved.