Update of /cvsroot/pclasses/pclasses2/src/System
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5411/src/System
Modified Files:
Thread.common.cpp
Log Message:
Add support for variable Callbacks in Thread::spawn()
Index: Thread.common.cpp
===================================================================
RCS file: /cvsroot/pclasses/pclasses2/src/System/Thread.common.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- Thread.common.cpp 28 Jan 2005 11:36:38 -0000 1.1
+++ Thread.common.cpp 28 Jan 2005 17:36:12 -0000 1.2
@@ -27,8 +27,8 @@
class SpawnedThread: public Thread {
public:
- SpawnedThread(const Callback0<void>& cb, Semaphore* sem)
- : Thread(true), _callback(cb.clone()), _sem(sem)
+ SpawnedThread(const Callback& cb, const CallbackArgs& args, Semaphore* sem)
+ : Thread(true), _callback(cb.clone()), _args(&args), _sem(sem)
{
}
@@ -38,23 +38,31 @@
if(_sem)
_sem->post();
- _callback->exec();
+ _callback->exec(*_args);
if(_sem)
_sem->post();
+ delete _callback;
delete this;
return 0;
}
private:
- Callback0<void>* _callback;
- Semaphore* _sem;
+ Callback* _callback;
+ const CallbackArgs* _args;
+ Semaphore* _sem;
};
-void Thread::spawn(const Callback0<void>& cb, Semaphore* sem) throw(SystemError)
+void Thread::spawn(const Callback& cb, Semaphore* sem) throw(SystemError)
{
- SpawnedThread* thr = new SpawnedThread(cb, sem);
+ Callback0<void>::Args args;
+ spawn(cb, args, sem);
+}
+
+void Thread::spawn(const Callback& cb, const CallbackArgs& args, Semaphore* sem) throw(SystemError)
+{
+ SpawnedThread* thr = new SpawnedThread(cb, args, sem);
thr->start();
// we don't leak the object ... it is self-deleted
}
|