Mercurial > sdl-ios-xcode
diff docs/html/thread.html @ 0:74212992fb08
Initial revision
author | Sam Lantinga <slouken@lokigames.com> |
---|---|
date | Thu, 26 Apr 2001 16:45:43 +0000 |
parents | |
children | 55f1f1b3e27d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/html/thread.html Thu Apr 26 16:45:43 2001 +0000 @@ -0,0 +1,305 @@ +<HTML +><HEAD +><TITLE +>Multi-threaded Programming</TITLE +><META +NAME="GENERATOR" +CONTENT="Modular DocBook HTML Stylesheet Version 1.61 +"><LINK +REL="HOME" +TITLE="SDL Library Documentation" +HREF="index.html"><LINK +REL="UP" +TITLE="SDL Reference" +HREF="reference.html"><LINK +REL="PREVIOUS" +TITLE="SDL_CDtrack" +HREF="sdlcdtrack.html"><LINK +REL="NEXT" +TITLE="SDL_CreateThread" +HREF="sdlcreatethread.html"><META +NAME="KEYWORD" +CONTENT="threads"><META +NAME="KEYWORD" +CONTENT="function"></HEAD +><BODY +CLASS="CHAPTER" +BGCOLOR="#FFF8DC" +TEXT="#000000" +LINK="#0000ee" +VLINK="#551a8b" +ALINK="#ff0000" +><DIV +CLASS="NAVHEADER" +><TABLE +WIDTH="100%" +BORDER="0" +CELLPADDING="0" +CELLSPACING="0" +><TR +><TH +COLSPAN="3" +ALIGN="center" +>SDL Library Documentation</TH +></TR +><TR +><TD +WIDTH="10%" +ALIGN="left" +VALIGN="bottom" +><A +HREF="sdlcdtrack.html" +>Prev</A +></TD +><TD +WIDTH="80%" +ALIGN="center" +VALIGN="bottom" +></TD +><TD +WIDTH="10%" +ALIGN="right" +VALIGN="bottom" +><A +HREF="sdlcreatethread.html" +>Next</A +></TD +></TR +></TABLE +><HR +ALIGN="LEFT" +WIDTH="100%"></DIV +><DIV +CLASS="CHAPTER" +><H1 +><A +NAME="THREAD" +>Chapter 12. Multi-threaded Programming</A +></H1 +><DIV +CLASS="TOC" +><DL +><DT +><B +>Table of Contents</B +></DT +><DT +><A +HREF="sdlcreatethread.html" +>SDL_CreateThread</A +> — Creates a new thread of execution that shares its parent's properties.</DT +><DT +><A +HREF="sdlthreadid.html" +>SDL_ThreadID</A +> — Get the 32-bit thread identifier for the current thread.</DT +><DT +><A +HREF="sdlgetthreadid.html" +>SDL_GetThreadID</A +> — Get the SDL thread ID of a SDL_Thread</DT +><DT +><A +HREF="sdlwaitthread.html" +>SDL_WaitThread</A +> — Wait for a thread to finish.</DT +><DT +><A +HREF="sdlkillthread.html" +>SDL_KillThread</A +> — Gracelessly terminates the thread.</DT +><DT +><A +HREF="sdlcreatemutex.html" +>SDL_CreateMutex</A +> — Create a mutex</DT +><DT +><A +HREF="sdldestroymutex.html" +>SDL_DestroyMutex</A +> — Destroy a mutex</DT +><DT +><A +HREF="sdlmutexp.html" +>SDL_mutexP</A +> — Lock a mutex</DT +><DT +><A +HREF="sdlmutexv.html" +>SDL_mutexV</A +> — Unlock a mutex</DT +><DT +><A +HREF="sdlcreatesemaphore.html" +>SDL_CreateSemaphore</A +> — Creates a new semaphore and assigns an initial value to it.</DT +><DT +><A +HREF="sdldestroysemaphore.html" +>SDL_DestroySemaphore</A +> — Destroys a semaphore that was created by <A +HREF="sdlcreatesemaphore.html" +>SDL_CreateSemaphore</A +>.</DT +><DT +><A +HREF="sdlsemwait.html" +>SDL_SemWait</A +> — Lock a semaphore and suspend the thread if the semaphore value is zero.</DT +><DT +><A +HREF="sdlsemtrywait.html" +>SDL_SemTryWait</A +> — Attempt to lock a semaphore but don't suspend the thread.</DT +><DT +><A +HREF="sdlsemwaittimeout.html" +>SDL_SemWaitTimeout</A +> — Lock a semaphore, but only wait up to a specified maximum time.</DT +><DT +><A +HREF="sdlsempost.html" +>SDL_SemPost</A +> — Unlock a semaphore.</DT +><DT +><A +HREF="sdlsemvalue.html" +>SDL_SemValue</A +> — Return the current value of a semaphore.</DT +><DT +><A +HREF="sdlcreatecond.html" +>SDL_CreateCond</A +> — Create a condition variable</DT +><DT +><A +HREF="sdldestroycond.html" +>SDL_DestroyCond</A +> — Destroy a condition variable</DT +><DT +><A +HREF="sdlcondsignal.html" +>SDL_CondSignal</A +> — Restart a thread wait on a condition variable</DT +><DT +><A +HREF="sdlcondbroadcast.html" +>SDL_CondBroadcast</A +> — Restart all threads waiting on a condition variable</DT +><DT +><A +HREF="sdlcondwait.html" +>SDL_CondWait</A +> — Wait on a condition variable</DT +><DT +><A +HREF="sdlcondwaittimeout.html" +>SDL_CondWaitTimeout</A +> — Wait on a condition variable, with timeout</DT +></DL +></DIV +><P +>SDL provides functions for creating threads, mutexes, semphores and condition variables.</P +><P +>In general, you must be very aware of concurrency and data integrity issues +when writing multi-threaded programs. Some good guidelines include: +<P +></P +><UL +><LI +><P +>Don't call SDL video/event functions from separate threads</P +></LI +><LI +><P +>Don't use any library functions in separate threads</P +></LI +><LI +><P +>Don't perform any memory management in separate threads</P +></LI +><LI +><P +>Lock global variables which may be accessed by multiple threads</P +></LI +><LI +><P +>Never terminate threads, always set a flag and wait for them to quit</P +></LI +><LI +><P +>Think very carefully about all possible ways your code may interact</P +></LI +></UL +></P +><DIV +CLASS="NOTE" +><BLOCKQUOTE +CLASS="NOTE" +><P +><B +>Note: </B +>SDL's threading is not implemented on MacOS, due to that lack of preemptive thread support (eck!)</P +></BLOCKQUOTE +></DIV +></DIV +><DIV +CLASS="NAVFOOTER" +><HR +ALIGN="LEFT" +WIDTH="100%"><TABLE +WIDTH="100%" +BORDER="0" +CELLPADDING="0" +CELLSPACING="0" +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +><A +HREF="sdlcdtrack.html" +>Prev</A +></TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +><A +HREF="index.html" +>Home</A +></TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +><A +HREF="sdlcreatethread.html" +>Next</A +></TD +></TR +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +>SDL_CDtrack</TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +><A +HREF="reference.html" +>Up</A +></TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +>SDL_CreateThread</TD +></TR +></TABLE +></DIV +></BODY +></HTML +> \ No newline at end of file