News for hackers. Stuff that matters.
Re:Why Rust? [pdf] by Animats on Wednesday September 09, 2015 @01:26PM (#10192737)
Threads were introduced in UNIVAC 1108 EXEC 8, first demoed in 1967 and running in production from about 1969. They were called "activities", but were created with "fork". The OS, which ran on multiprocessors, used them internally, and applications could use them as well. EXEC 8 also had synchronous and asynchronous I/O (callbacks). It's called OS 2200 today, and still running.

When I went from EXEC 8 to UNIX in 1978, my main observation was that the I/O was better but the CPU management in UNIX was much worse.

Re:Why Rust? [pdf] by cgh on Wednesday September 09, 2015 @04:57PM (#10194529)
Thanks for that, I had no idea. Were those actual shared-state threads or processes? Just wondering about the use of "fork".
Re:Why Rust? [pdf] by Animats on Wednesday September 09, 2015 @09:43PM (#10195746)
Shared-state threads in the same memory space. They could do I/O independently, lock and unlock critical sections, and block on semaphores. Worked fine. To create a new thread, you called FORK$. See section 8, page 2, of the 1966 EXEC 8 manual.[1]

Here are Djykstra's P and V functions for the UNIVAC 1108, to run in user space. Written in 1972.[2]

I once added support for threads to Pascal for that machine. Had to add per-thread stacks and manage non-contiguous stack growth.

[1] https://ia601603.us.archive.org/27/items/bitsavers_univac110...

[2] http://www.fourmilab.ch/documents/univac/fang/