summaryrefslogtreecommitdiff
path: root/src/condition.cpp
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2011-10-06 03:25:22 +0000
committerMike Buland <eichlan@xagasoft.com>2011-10-06 03:25:22 +0000
commit208b983734d7431699f4bd3534e08321e42ada86 (patch)
treea6865f0db36e9c3b8dd13b9ed4d10d282f0f7cbf /src/condition.cpp
parent1358cb4c7325e01c13533ca402cccc28575cdf14 (diff)
downloadlibbu++-208b983734d7431699f4bd3534e08321e42ada86.tar.gz
libbu++-208b983734d7431699f4bd3534e08321e42ada86.tar.bz2
libbu++-208b983734d7431699f4bd3534e08321e42ada86.tar.xz
libbu++-208b983734d7431699f4bd3534e08321e42ada86.zip
Renamed most of the core threading system, some ancillary systems need some
kind of prefix or something, we could stick with Ito, I will until I think of something else.
Diffstat (limited to 'src/condition.cpp')
-rw-r--r--src/condition.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/condition.cpp b/src/condition.cpp
new file mode 100644
index 0000000..2f55ce2
--- /dev/null
+++ b/src/condition.cpp
@@ -0,0 +1,49 @@
1/*
2 * Copyright (C) 2007-2011 Xagasoft, All rights reserved.
3 *
4 * This file is part of the libbu++ library and is released under the
5 * terms of the license contained in the file LICENSE.
6 */
7
8#include <sys/time.h>
9
10#include "bu/condition.h"
11
12Bu::Condition::Condition()
13{
14 pthread_cond_init( &cond, NULL );
15}
16
17Bu::Condition::~Condition()
18{
19 pthread_cond_destroy( &cond );
20}
21
22int Bu::Condition::wait()
23{
24 return pthread_cond_wait( &cond, &mutex );
25}
26
27int Bu::Condition::wait( int nSec, int nUSec )
28{
29 struct timeval now;
30 struct timespec timeout;
31 struct timezone tz;
32
33 gettimeofday( &now, &tz );
34 timeout.tv_sec = now.tv_sec + nSec + ((now.tv_usec + nUSec)/1000000);
35 timeout.tv_nsec = ((now.tv_usec + nUSec)%1000000)*1000;
36
37 return pthread_cond_timedwait( &cond, &mutex, &timeout );
38}
39
40int Bu::Condition::signal()
41{
42 return pthread_cond_signal( &cond );
43}
44
45int Bu::Condition::broadcast()
46{
47 return pthread_cond_broadcast( &cond );
48}
49