[kwlug disc.] how long would it take you to learn threads programming?

R. Brent Clements rbclemen at gmail.com
Tue Apr 22 13:45:03 EDT 2008


I remember I spent about a week or so studying the theory of
concurrent processing, covering both multithreaded and and large scale
parallel.  The practical was a single afternoon lab exercise.

Brent

On Tue, Apr 22, 2008 at 11:01 AM, Andrew Kohlsmith (lists)
<aklists at mixdown.ca> wrote:
> On April 22, 2008 10:12:12 am Robert P. J. Day wrote:
>  >   i've been asked about the possibility of teaching a course in
>  > pthreads programming in linux and, since i already have some material
>  > lying around on the topic, i'm at least going to put together a
>  > proposal for such a course.  the question is -- how long should such a
>  > course take?
>
>  You could have the basics done in under a day, but the real devil is not in
>  the pthreads API or even in understand the concept of a bunch of "processes"
>  running around in the same memory space (which always reminds me of "ein
>  volk, ein Reich, ein Führer"), it's in the devilish details of multithreaded
>  programming.
>
>
>  >   anyone here have an opinion?  anyone ever take such a course?
>  > anyone who's an accomplished threads programmer have an idea of what
>  > *they* would consider an appropriate time frame?  i mean, i have no
>  > objection to getting paid for 3 or 4 days of training, but not if i
>  > have to fill a lot of that time with empty space just to drag it out.
>
>  I guess it all comes down to your target audience; if they're competent
>  programmers, you could probably hit 3 days because you'd spend two of them on
>  scheduling options, concurrent access (locking and lockless), priority
>  inversion and things that trip up even experienced programmers once you throw
>  the multiple execution wrench into the machine.  You could come up with a
>  bunch of examples to run through and let THEM hit the obvious bugs and work
>  through them as a group instead of just telling them about the pitfalls...
>  There are a lot of opportunities for "eureka!" moments in this kind of a
>  course.
>
>  If your target audience is low to mid-level programmers I wouldn't even try to
>  tackle this; "real" multithreaded programming is not a beginner or even
>  intermediate topic.  They need to have a solid grasp on regular old IPC
>  before hitting anything even moderately threaded.  Just IMO, though.  I have
>  been programming in C for close to 15 years now, and "just using threads" was
>  easy, trivial even.  However, getting a solid grasp on the scheduling options
>  and effects of priority and yielding took some real work, and debugging some
>  of this stuff was downright maddening. I certainly consider being able to do
>  anything non-trivial in a multithreaded fashion to be an advanced-level task.
>
>  Now I had another strike against me; I was doing this all on m68knommu, so in
>  addition to trying to debug threads, I was fighting a total lack of memory
>  protection and also gdbserver, which is pretty much incapable of debugging
>  multithreaded applications on that platform.  I ended up porting the app to
>  x86, writing a couple device drivers and debugging most of it there. The
>  application was better off because the exercise increased its portability and
>  exposed a few places I was making assumptions about byte order, and the
>  overall experience gained was priceless.
>
>  What I first thought I knew about multithreaded programming turned out to be a
>  lot less than what was was needed to *really* do multithreaded programming.
>  I liken it to knowing how an engine works vs. actually tearing one down to
>  solve a problem.  :-)
>
>  Which reminds me of my all-time favourite adage:
>
>  The difference between theory and practise is that in theory, there is no
>  difference between theory and practise.
>
>  -A.
>
>
> _______________________________________________
>  KWLUG-Disc mailing list
>  KWLUG-Disc at kwlug.org
>  http://listserv.kwlug.org/mailman/listinfo/kwlug-disc
>


More information about the KWLUG-Disc mailing list