[16969:16991/trunk/src/] will be re-committed in the next 24 hours. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16992 54d463be-8e91-2dee-dedb-b68131a5f0ec
120 lines
2.8 KiB
C
120 lines
2.8 KiB
C
// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL
|
|
// For more information, see LICENCE in the main folder
|
|
|
|
#pragma once
|
|
#ifndef _rA_THREAD_H_
|
|
#define _rA_THREAD_H_
|
|
|
|
#include "../common/cbasetypes.h"
|
|
|
|
typedef struct rAthread *rAthread;
|
|
typedef void* (*rAthreadProc)(void*);
|
|
|
|
typedef enum RATHREAD_PRIO {
|
|
RAT_PRIO_LOW = 0,
|
|
RAT_PRIO_NORMAL,
|
|
RAT_PRIO_HIGH
|
|
} RATHREAD_PRIO;
|
|
|
|
|
|
/**
|
|
* Creates a new Thread
|
|
*
|
|
* @param entyPoint - entryProc,
|
|
* @param param - general purpose parameter, would be given as parameter to the thread's entrypoint.
|
|
*
|
|
* @return not NULL if success
|
|
*/
|
|
rAthread rathread_create( rAthreadProc entryPoint, void *param );
|
|
|
|
|
|
/**
|
|
* Creates a new Thread (with more creation options)
|
|
*
|
|
* @param entyPoint - entryProc,
|
|
* @param param - general purpose parameter, would be given as parameter to the thread's entrypoint
|
|
* @param szStack - stack Size in bytes
|
|
* @param prio - Priority of the Thread @ OS Scheduler..
|
|
*
|
|
* @return not NULL if success
|
|
*/
|
|
rAthread rathread_createEx( rAthreadProc entryPoint, void *param, size_t szStack, RATHREAD_PRIO prio );
|
|
|
|
|
|
/**
|
|
* Destroys the given Thread immediatly
|
|
*
|
|
* @note The Handle gets invalid after call! dont use it afterwards.
|
|
*
|
|
* @param handle - thread to destroy.
|
|
*/
|
|
void rathread_destroy ( rAthread handle );
|
|
|
|
|
|
/**
|
|
* Returns the thread handle of the thread calling this function
|
|
*
|
|
* @note this wont work @ programms main thread
|
|
* @note the underlying implementation might not perform very well, cache the value received!
|
|
*
|
|
* @return not NULL if success
|
|
*/
|
|
rAthread rathread_self( );
|
|
|
|
|
|
/**
|
|
* Returns own thrad id (TID)
|
|
*
|
|
* @note this is an unique identifier for the calling thread, and
|
|
* depends on platfrom / compiler, and may not be the systems Thread ID!
|
|
*
|
|
* @return -1 when fails, otherwise >= 0
|
|
*/
|
|
int rathread_get_tid();
|
|
|
|
|
|
/**
|
|
* Waits for the given thread to terminate
|
|
*
|
|
* @param handle - thread to wait (join) for
|
|
* @param out_Exitcode - [OPTIONAL] - if given => Exitcode (value) of the given thread - if it's terminated
|
|
*
|
|
* @return true - if the given thread has been terminated.
|
|
*/
|
|
bool rathread_wait( rAthread handle, void* *out_exitCode );
|
|
|
|
|
|
/**
|
|
* Sets the given PRIORITY @ OS Task Scheduler
|
|
*
|
|
* @param handle - thread to set prio for
|
|
* @param rio - the priority (RAT_PRIO_LOW ... )
|
|
*/
|
|
void rathread_prio_set( rAthread handle, RATHREAD_PRIO prio );
|
|
|
|
|
|
/**
|
|
* Gets the current Prio of the given trhead
|
|
*
|
|
* @param handle - the thread to get the prio for.
|
|
*/
|
|
RATHREAD_PRIO rathread_prio_get( rAthread handle);
|
|
|
|
|
|
/**
|
|
* Tells the OS scheduler to yield the execution of the calling thread
|
|
*
|
|
* @note: this will not "pause" the thread,
|
|
* it just allows the OS to spent the remaining time
|
|
* of the slice to another thread.
|
|
*/
|
|
void rathread_yield();
|
|
|
|
|
|
|
|
void rathread_init();
|
|
void rathread_final();
|
|
|
|
|
|
#endif
|