200 likes | 210 Views
Explore multithreading options like pthreads and qthreads in C/C++ with in-depth analysis on Java thread initialization and communication between threads. Learn rate monotonic analysis and thread management techniques.
E N D
SE3910Week 8, Class 1 • Today • Return Quiz • First true release of final project (Lab 8) • Multithreading Options • Qt socket buffers between threads SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder
Quizzes • Today • Various unit analyses (e.g. audio rates, video rates, Nyquist theorem) • Scheduling • Round-robin vs. Cyclic Code Scheduling • Rate Monotonic Analysis • Compile vs. Link errors • In-lab (8-Lab) • Interthread communication • Ask me on Monday! SE-2811 Dr.Yoder
Options for multithreading (review) • pthreads • POSIX (Linux/Unix standard) threads • Can use in C/C++ • qthreads • Qt Threads • Object-Oriented • Uses pthreads under the hood, when on POSIX [1] • Derek Malloy’s GPIO class • Uses pthreads under the hood, but is single-threaded • Boost (Please discuss this with me BEFORE HAND if you want to use it.) [1] http://stackoverflow.com/questions/4140189/qthreads-vs-pthreads
I was asked this question in an interview today…. (continued) "When we create a thread with pthread_create() (POSIX Threads), the thread starts on its own. Why do we need to explicitly call start() in Java. What is the reason that Java doesnt start the thread when we create an instance of it." I was blank and interviewer was short of time and eventually he couldnt explain the reason to me. http://stackoverflow.com/questions/5269535/java-threads-vs-pthreads SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Task States Wiki:Process (computing) See also Laplanteand Ovaske 4E p. 97 SE-2811 Dr.Yoder
Threading – pthreads (updated) • Caveat: “POSIX threads can wait at condition variables of a greater generality than available in Java, but the corresponding queues may be leaky.” http://wimhesselink.nl/pub/whh241b.pdf SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Threading – qthreads UNTESTED
Looks useful if you are into Qt slots/signals == events “A QThread should be used much like a regular thread instance: prepare an object (QObject) class with all your desired functionality in it. Then create a new QThread instance, push the QObject onto it using moveToThread(QThread*) of the QObject instance and call start() on the QThread instance. That’s all.” https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/ I have not used this approach. SE-2811 Dr.Yoder
Possibly Fun • Very simple C++ wrapper for pthreads • http://www.cs.utexas.edu/users/lavender/courses/cs345/lectures/CS345-Lecture-09.pdf • notify/wait – example comparison with Java and pthreads • http://wimhesselink.nl/pub/whh241b.pdf • Compares create for Java, pthreads, and Win32 threads • http://cs.millersville.edu/~csweb/lib/userfiles/9ThreadsII.pdf SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Certainly fun (Dr. Taylor’s Reviews) • http://msoe.us/taylor/tutorial/ce2810/functionpointers • Function Pointers • http://msoe.us/taylor/tutorial/ce2810/csimilar • C/C++/Java • http://msoe.us/taylor/tutorial/ce2810/ooc • Object-Oriented C SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Other references • http://granite.sru.edu/~whit/cpsc464/Notes/figs/02-14.jpg • Simple pthread chart • From http://granite.sru.edu/~whit/cpsc464/Notes/ch2.html • https://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fapis%2Fusers_75.htm • IBM example of using pthread_cond_init SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Standards • http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread.h.html • pthead.h • http://pubs.opengroup.org/onlinepubs/7908799/xsh/systypes.h.html • systypes.h – for xxxx_t SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Muddiest Point Wait for the slides, or follow this link to answer both questions at once: • http://bit.ly/1Mow5a3 SE-2811 Dr.Yoder
http://bit.ly/1Mow5a3 SE-2811 Dr. Josiah Yoder
http://bit.ly/1Mow5a3 SE-2811 Dr. Josiah Yoder
References EBB: Derek Malloy, Exploring Beaglebone, Wiley, 2015 RTS: Laplanteand Ovaska, Real-Time Systems Design and Analysisby, Fourth Edition, Wiley, 2012 SE-2811 Slide design: Dr. Mark L. Hornick Content: Dr. Hornick Errors: Dr. Yoder
Someday soon • Late next week? • Real-Time Operating Systems • What is a RTOS? How does it relate to the rest? • OS roles • Interrupts and the OS • Definitions, Flowchart, Timing diagram • Detailed steps • Scheduling • Task states & pre-runtime vs runtime SE-2811 Dr.Yoder
Task States Wiki:Process (computing) See also Laplanteand Ovaske 4E p. 97 SE-2811 Dr.Yoder