global interpreter lock

Mike Meyer mwm at mired.org
Wed Aug 31 22:44:06 EDT 2005


Bryan Olson <fakeaddress at nowhere.org> writes:
> Bengt Richter wrote:
>  > Bryan Olson  wrote:
>  >>For a long time,
>  >>the most sophisticated software services generally have used
>  >>multiple lines of execution, and now that's mostly in the form
>  >>of threads. No one actually disagrees, but they go right on
>  >>knocking the modern methods.
>  > I think Mike is asking for references/citations/links to the
>  > "concurrency systems" and "modern methods" you are talking about ;-)
>  > (I'd be interested too ;-)
> Sure. I tried to be helpful there, but maybe I need to be more
> specific. The ref from my previous post, Google-able as "The
> C10K problem" is good but now a little dated.

That appears to be a discussion on squeezing the most out of a network
server, touching on threading models only so far as to mention what's
available for popular languages on some popular server OS's.

> System support for threads has advanced far beyond what Mr. Meyer
> dealt with in programming the Amiga.

I don't think it has - but see below.

> In industry, the two major camps are Posix threads, and Microsoft's
> Win32 threads (on NT or better).  Some commercial Unix vendors have
> mature support for Posix threads; on Linux, the NPTL is young but
> clearly the way to move forward.

I haven't looked at Win32 threading. Maybe it's better than Posix
threads. Sure, Posix threads is better than what I dealt with 10 years
ago, but there's no way I'd call it "advanced beyond" that model. They
aren't even as good as the Python Threading/Queue model.

> Java and Ada will wrap the native thread package, which
> C(++) offers it directly.

Obviously, any good solution will wrap the native threads
package. Just like it wraps the I/O package. That doesn't make the
native threads package good. You also have to deal with the cost the
compiler pays when you implement threading primitives as library
calls. I'm surprised the paper didn't mention that problem, as it
effects performance so directly.

I don't know what Ada offers. Java gives you pseudo-monitors. I'm
almost willing to call them "advanced", but they are still don't
really help much. There are some good threading models
available. Posix threads isn't one of them, nor is Java's
"synchronized".

    <mike
-- 
Mike Meyer <mwm at mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.



More information about the Python-list mailing list