diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2010-12-16 10:28:27 +0000 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2010-12-16 10:28:27 +0000 |
| commit | e1887bf09cf34d43681e3b17dc69f564e6da16a8 (patch) | |
| tree | 952ce2aa24c00638f751f3d05416287f79178f94 /documentation/src/advanced.dox | |
| parent | 8ac8d3e8d7886be912c3b04c0ec2c1b9297a0df8 (diff) | |
Fixed documentation errors (typos and formatting) in chapter
chapter "Advanced FLTK" (Multithreading) and added a short
explanation to sending and retrieving messages.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8047 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'documentation/src/advanced.dox')
| -rw-r--r-- | documentation/src/advanced.dox | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/documentation/src/advanced.dox b/documentation/src/advanced.dox index dde0e1e18..2d8012a1a 100644 --- a/documentation/src/advanced.dox +++ b/documentation/src/advanced.dox @@ -7,7 +7,7 @@ that will help you to get the most out of FLTK. \section advanced_multithreading Multithreading -FLTK supports multithreaded application using a locking mechanism +FLTK supports multithreaded applications using a locking mechanism based on "pthreads". We do not provide a threading interface as part of the library. However a simple example how threads can be implemented for all supported platforms can be found in \p test/threads.h @@ -30,7 +30,7 @@ locked: int main() { Fl::lock(); /* run thread */ - while (Fl::wait() > 0) { + while (Fl::wait() > 0) { if (Fl::thread_message()) { /* process your data */ } @@ -48,7 +48,7 @@ with calls to Fl::lock() and Fl::unlock(): Fl::unlock(); // allow other threads to access FLTK again \endcode -You can send messages from child threads to the main thread +You can send messages from child threads to the main thread using Fl::awake(void* message): \code @@ -56,6 +56,9 @@ using Fl::awake(void* message): Fl::awake(msg); // send "msg" to main thread \endcode +A message can be anything you like. The main thread can retrieve +the message by calling Fl::thread_message(). See example above. + You can also tell the main thread to call a function for you as soon as possible by using Fl::awake(Fl_Awake_Handler cb, void* userdata): @@ -70,18 +73,18 @@ Fl::awake(Fl_Awake_Handler cb, void* userdata): Fl::awake(do_something, data); // call something in main thread \endcode - + FLTK supports multiple platforms, some of which allow only the -the main thread to handle system events and -open or close windows. The safe thing to do is to adhere to the -following rules for threads on all operating systems: +main thread to handle system events and open or close windows. +The safe thing to do is to adhere to the following rules for +threads on all operating systems: -\li Don't \p show() or \p hide() anything that contains +\li Don't \p show() or \p hide() anything that contains widgets derived from Fl_Window, including dialogs, file choosers, subwindows or those using Fl_Gl_Window. -\li Don't call Fl::wait(), Fl::flush() or any +\li Don't call Fl::wait(), Fl::flush() or any related methods that will handle system messages \li Don't start or cancel timers @@ -93,7 +96,7 @@ following rules for threads on all operating systems: to allow for high speed rendering on graphics cards with multiple pipelines -See also: +See also: Fl::awake(void* message), Fl::lock(), Fl::thread_message(), |
