Updated Threads
[fmail.git] / src / posix-thread.cpp
blob91d7a736d77f8e6e06eb7dc98f3a3c0b13dd7a32
1 /*
2 libfmail: Thread class
4 Copyright (C) 2007 Carlos Daniel Ruvalcaba Valenzuela <clsdaniel@gmail.com>
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License along
17 with this program; if not, write to the Free Software Foundation, Inc.,
18 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #include <stdio.h>
21 #include <malloc.h>
22 #include <pthread.h>
24 #include <libfmail/thread.h>
26 struct _osthread{
27 pthread_t thread;
30 extern "C"{
32 void* Thread_pthread_handler(void *th){
33 Thread *t;
35 t = (Thread*)th;
36 t->Run();
41 Thread::Thread(){
42 os_thread = (OSThread*)malloc(sizeof(OSThread));
45 Thread::~Thread(){
46 free(os_thread);
49 int Thread::Start(){
50 pthread_create(&(os_thread->thread), NULL, &Thread_pthread_handler, this);
53 int Thread::Stop(){
54 pthread_cancel(os_thread->thread);
57 int Thread::Join(){
58 pthread_join(os_thread->thread, NULL);
61 int Thread::isAlive(){