diff options
Diffstat (limited to 'ml/dlib/examples/thread_function_ex.cpp')
-rw-r--r-- | ml/dlib/examples/thread_function_ex.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/ml/dlib/examples/thread_function_ex.cpp b/ml/dlib/examples/thread_function_ex.cpp new file mode 100644 index 00000000..91825ffe --- /dev/null +++ b/ml/dlib/examples/thread_function_ex.cpp @@ -0,0 +1,71 @@ +// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt +/* + This is a very simple example that illustrates the use of the + thread_function object from the dlib C++ Library. + + The output of the programs should look like this: + + 45.6 + 9.999 + I have no args! + val: 3 +*/ + + +#include <iostream> +#include <dlib/threads.h> +#include <dlib/ref.h> + +using namespace dlib; +using namespace std; + +void thread_1(double a) +{ + cout << a << endl; +} + +void thread_2 () +{ + cout << "I have no args!" << endl; +} + +void thread_increment(double& a) +{ + a += 1; +} + +int main() +{ + // create a thread that will call thread_1(45.6) + thread_function t1(thread_1,45.6); + // wait for the t1 thread to end + t1.wait(); + + + // create a thread that will call thread_1(9.999) + thread_function t2(thread_1,9.999); + // wait for the t2 thread to end + t2.wait(); + + + // create a thread that will call thread_2() + thread_function t3(thread_2); + + + // Note that we can also use the ref() function to pass a variable + // to a thread by reference. For example, the thread below adds + // one to val. + double val = 2; + thread_function t4(thread_increment, dlib::ref(val)); + t4.wait(); // wait for t4 to finish before printing val. + // Print val. It will now have a value of 3. + cout << "val: " << val << endl; + + + + // At this point we will automatically wait for t3 to end because + // the destructor for thread_function objects always wait for their + // thread to terminate. +} + + |