1 // Copyright 2008 Brian Caine
3 // This file is part of Potpourri.
5 // Potpourri is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
10 // Potpourri is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTIBILITY of FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with Potpourri. If not, see <http://www.gnu.org/licenses/>.
21 // This is the sauce for the Thread class
27 using namespace fragrant
;
29 Thread
* Thread::makeThread(ThreadFunc function
,
30 std::vector
<fragrant::Variant
*> params
)
32 Thread
* thread
= new Thread(function
, params
);
38 std::cerr
<< "Thread::makeThread(): Error making thread" << std::endl
;
50 pthread_join(threadnum
, 0);
54 Thread::Thread(ThreadFunc function
, std::vector
<fragrant::Variant
*> params
)
56 // no reason to refuse
57 was_made
= static_cast<bool>(function
);
68 errnum
= pthread_create(&threadnum
, 0, Thread::run
,
69 static_cast<void*>(this));
73 std::cerr
<< "Thread::run(): Error starting thread" << std::endl
;
79 void* Thread::run(void* thread
)
81 Thread
* the_thread
= static_cast<Thread
*>(thread
);
83 ThreadFunc func
= the_thread
->func
;
84 std::vector
<fragrant::Variant
*> params
= the_thread
->func_params
;
91 bool Thread::was_made
= false;