From 3cb5ebe0e811f3db008085d985b7761725589a74 Mon Sep 17 00:00:00 2001 From: No Author Date: Wed, 1 Aug 2001 21:24:49 +0000 Subject: This commit was manufactured by cvs2svn to create branch 'branch-1.1'. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1513 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- test/threads.cxx | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 test/threads.cxx (limited to 'test/threads.cxx') diff --git a/test/threads.cxx b/test/threads.cxx new file mode 100644 index 000000000..6aabed8f3 --- /dev/null +++ b/test/threads.cxx @@ -0,0 +1,65 @@ +#include +#include +#include +#include +#include + +Fl_Thread prime_thread; + +Fl_Browser *browser1, *browser2; + +void* prime_func(void* p) +{ + Fl_Browser* browser = (Fl_Browser*) p; + + // very loosy prime number calculator ! + for (int n=1000000; ; n++) { + int p; + for (p=2; padd(s); + Fl::unlock(); + Fl::awake((void*) (browser == browser1? p:0)); // Cause the browser to redraw ... + } + } + return 0; +} + +int main() +{ + Fl_Window* w = new Fl_Window(200, 300, "Multithread test"); + browser1 = new Fl_Browser(0, 0, 200, 300); + w->end(); + w->show(); + w = new Fl_Window(200, 300, "Multithread test"); + browser2 = new Fl_Browser(0, 0, 200, 300); + w->end(); + w->show(); + + browser1->add("Prime numbers :"); + browser2->add("Prime numbers :"); + + Fl::lock(); // you must do this before creating any threads! + + // One thread displaying in one browser + fl_create_thread(prime_thread, prime_func, browser1); + // Several threads displaying in another browser + fl_create_thread(prime_thread, prime_func, browser2); + fl_create_thread(prime_thread, prime_func, browser2); + fl_create_thread(prime_thread, prime_func, browser2); + fl_create_thread(prime_thread, prime_func, browser2); + fl_create_thread(prime_thread, prime_func, browser2); + fl_create_thread(prime_thread, prime_func, browser2); + + // Fl::run(); + while (w->visible()) { + Fl::wait(); + void* m = Fl::thread_message(); + if (m) printf("Recieved message: %d\n", int(m)); + } + + return 0; +} -- cgit v1.2.3