Getting Started - Threads with Shared Memory
By Min Xu, CS/ECE 757 TA, 2002
What are Threads
The multithreaded programming model is perhaps the most
popular model for shared memory programming. Threads
are light-weighted execution units inside each OS
Thread vs. pthread
Look at the example code
What's the difference? In short, eg.c uses Solaris thread
and eg_pthread.c uses POSIX thread. Generally, we recommend
POSIX thread because it is the stardard API across difference
platforms. Please type
man threads for more information
on the difference between Solaris thread and POSIX thread.
into your own
To learn the concept of mutex, condition, etc., type:
To bring a list of available function, type:
man threads or
To consult a specific function, e.g. pthread_mutex_lock, type:
Compile: cc vs. gcc
To compile and link, type
cc -lpthread cg_pthread.c
To get better optimization, cc is recommended. However, for those
who are really interested in maximum optimization, please be careful
not to use thread-unsafe optimization options like -lfast.
Run your program
Running multithreaded executables are no different from normal execuables.
However, processor binding is something that you can control.
In the source code level, you can bind your threads to certain
processors, otherwise, the scheduling decision is left to the
Debug: dbx vs. gdb
Want to debug your program? The answer is sure, but try not to depend
on it. Both dbx
and gdb support multithreaded debugging, but race conditions
are generally hard to be replayed in the debugger. So write
your code more carefully.
Another useful tool to check you code is
Please see the book referred at the bottom of the page or the
man page on how to use it. But be aware that lock_lint is very
restrict on how to synchronize, some rules you may
not want to follow for performance reasons.
Now you may want to read through the
Multithreaded Programming Guide from
Sun Microsystems, and enjoy the power of multithreaded programming.