From: matz@... (Yukihiro Matsumoto) Date: 2002-04-22T11:50:18+09:00 Subject: Re: Threads creating threads creating threads... Hi, In message "Re: Threads creating threads creating threads..." on 02/04/21, Jean-Hugues ROBERT writes: |>Ruby's thread implementation isn't the best. It is slow since |>switching threads involves physically copying the stack memory. | |Very surprising ?! I once implemented a portable thread library. Using |setjmp()/longjmp() too. However I implemented thread stacks in the global |process stack, using a rather difficult to follow state automata, recursive |calls and setjmp()/longjmp() to control the program flow. | |Result was that the process's stack was fragmented into small chunks. |Thread switching involved setjmp()/longjmp() only, no copying at all. Was |much faster than native threads... but non-preemptive and not taking any |advantages of multiprocessor architectures. Hmm, I thought this behavior requires the knowledge about internal of jmp_buf structure. I'm very interested in how it works. Could you show me the source, please? matz.