annotate src/modules/thread/ThreadModule.h @ 1304:ee1448bb9680 minor

Fix race conditions and deadlocks in Channels (hopefully) (issue #554) Also, this is a giant commit because of the official Code Style (tm) was applied.
author Bart van Strien <bart.bes+projects@gmail.com>
date Wed, 30 Jan 2013 17:15:12 +0100
parents a74672ba1320
children
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 #ifndef LOVE_THREAD_THREADMODULE_H
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
22 #define LOVE_THREAD_THREADMODULE_H
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
23
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
24 // STL
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
25 #include <string>
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 // LOVE
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
28 #include <common/Data.h>
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
29 #include <common/Module.h>
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
30 #include <thread/Thread.h>
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
31 #include <thread/Channel.h>
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
32 #include <thread/LuaThread.h>
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
33 #include <thread/threads.h>
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
34
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
35 namespace love
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
36 {
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
37 namespace thread
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
38 {
1304
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
39 class ThreadModule : public love::Module
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
40 {
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
41 public:
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
42 virtual ~ThreadModule() {}
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
43 LuaThread *newThread(const std::string &name, love::Data *data);
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
44 Channel *newChannel();
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
45 Channel *getChannel(const std::string &name);
1098
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
46
1304
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
47 const char *getName() const;
ee1448bb9680 Fix race conditions and deadlocks in Channels (hopefully) (issue #554)
Bart van Strien <bart.bes+projects@gmail.com>
parents: 1098
diff changeset
48 }; // ThreadModule
1098
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
49 } // thread
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
50 } // love
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
51
a74672ba1320 Merge in channels from love-experiments
Bart van Strien <bart.bes+projects@gmail.com>
parents:
diff changeset
52 #endif // LOVE_THREAD_THREADMODULE_H