annotate src/modules/thread/Channel.cpp @ 1101:025c67973ad4 minor

Make Channels more thread-safe (I know, I know..)
author Bart van Strien <bart.bes+projects@gmail.com>
date Wed, 04 Jul 2012 20:22:54 +0200
parents a74672ba1320
children fc7143cc0818
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1098
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
1 /**
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
2 * Copyright (c) 2006-2012 LOVE Development Team
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
3 *
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
4 * This software is provided 'as-is', without any express or implied
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
5 * warranty. In no event will the authors be held liable for any damages
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
6 * arising from the use of this software.
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
7 *
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
8 * Permission is granted to anyone to use this software for any purpose,
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
9 * including commercial applications, and to alter it and redistribute it
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
10 * freely, subject to the following restrictions:
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
11 *
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
12 * 1. The origin of this software must not be misrepresented; you must not
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
13 * claim that you wrote the original software. If you use this software
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
14 * in a product, an acknowledgment in the product documentation would be
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
15 * appreciated but is not required.
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
16 * 2. Altered source versions must be plainly marked as such, and must not be
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
17 * misrepresented as being the original software.
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
18 * 3. This notice may not be removed or altered from any source distribution.
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
19 **/
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
20
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
21 #include "Channel.h"
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
22 #include <map>
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
23 #include <string>
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
24
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
25 namespace love
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
26 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
27 namespace thread
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
28 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
29 static std::map<std::string, Channel*> namedChannels;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
30 static Mutex *namedChannelMutex;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
31 Channel *Channel::getChannel(const std::string &name)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
32 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
33 if (!namedChannelMutex)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
34 namedChannelMutex = newMutex();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
35 Lock l(namedChannelMutex);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
36 if (!namedChannels.count(name))
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
37 namedChannels[name] = new Channel(name);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
38 else
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
39 namedChannels[name]->retain();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
40 return namedChannels[name];
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
41 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
42
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
43 Channel::Channel()
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
44 : named(false)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
45 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
46 mutex = newMutex();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
47 cond = newConditional();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
48 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
49
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
50 Channel::Channel(const std::string &name)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
51 : named(true), name(name)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
52 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
53 mutex = newMutex();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
54 cond = newConditional();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
55 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
56
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
57 Channel::~Channel()
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
58 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
59 while (!queue.empty())
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
60 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
61 queue.front()->release();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
62 queue.pop();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
63 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
64
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
65 delete mutex;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
66 delete cond;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
67 if (named)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
68 namedChannels.erase(name);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
69 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
70
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
71 void Channel::push(Variant *var)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
72 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
73 if (!var)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
74 return;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
75 Lock l(mutex);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
76 var->retain();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
77 // Keep a reference to ourselves
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
78 // if we're non-empty and named.
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
79 if (named && queue.empty())
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
80 retain();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
81 queue.push(var);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
82 cond->signal();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
83 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
84
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
85 Variant *Channel::pop()
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
86 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
87 Lock l(mutex);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
88 if (queue.empty())
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
89 return 0;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
90
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
91 Variant *var = queue.front();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
92 queue.pop();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
93
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
94 // Release our reference to ourselves
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
95 // if we're empty and named.
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
96 if (named && queue.empty())
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
97 release();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
98 return var;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
99 } // NOTE: Returns a retained Variant
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
100
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
101 Variant *Channel::demand()
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
102 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
103 Variant *var;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
104 while (!(var = pop()))
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
105 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
106 mutex->lock();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
107 cond->wait(mutex);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
108 mutex->unlock();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
109 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
110 return var;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
111 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
112
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
113 Variant *Channel::peek()
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
114 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
115 Lock l(mutex);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
116 if (queue.empty())
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
117 return 0;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
118
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
119 Variant *var = queue.front();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
120 var->retain();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
121 return var;
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
122 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
123
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
124 int Channel::count()
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
125 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
126 Lock l(mutex);
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
127 return queue.size();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
128 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
129
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
130 void Channel::clear()
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
131 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
132 Lock l(mutex);
1101
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
133
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
134 // We're already empty.
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
135 if (queue.empty())
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
136 return;
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
137
1098
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
138 while (!queue.empty())
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
139 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
140 queue.front()->release();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
141 queue.pop();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
142 }
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
143
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
144 // Once again, release our own
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
145 // reference if we're named.
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
146 if (named)
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
147 release();
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
148 }
1101
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
149
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
150 void Channel::release()
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
151 {
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
152 if (named)
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
153 namedChannelMutex->lock();
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
154
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
155 Object::release();
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
156
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
157 if (named)
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
158 namedChannelMutex->unlock();
025c67973ad4 Make Channels more thread-safe (I know, I know..)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
159 }
1098
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
160 } // thread
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
161 } // love