BeOS did several things, I'll throw out the obvious one:
Separate the UI thread from main() (the thread doing the core app logic).
Yes, many OS's suggest spinning up a worker thread, but by default an app is single-threaded. The default in BeOS is 2 threads.
To the original poster, I'd like to point out that BeOS didn't (and Haiku doesn't) use a different compiler. What pg was saying was that we need a better compiler + language. Right now the programmer must manage every detail of the threads. A few abstractions are available - OpenMP, Apple's Grand Central Dispatch, etc. They don't really make highly parallel implementations though. The field is ripe for disruption.
Look at Verilog/VHDL for an example of a fully parallelized language.
> Yes, many OS's suggest spinning up a worker thread, but by default an app is single-threaded. The default in BeOS is 2 threads.
It's an interesting idea. It would be trivial to write boilerplate like this so that when you create a new .c file, it will start with a basic multi-threaded application.
I remember seeing some parallel FORTRAN code in the late 80's with things like loops explicitly marked for parallel execution and other tricks. The downside is that debugging mutable state across multiple threads is a bitch. It's not something I would wish to my worst enemy.
> Look at Verilog/VHDL for an example of a fully parallelized language.
I have been playing with the idea of using Verilog or VHDL to express computer programs... Did nothing, but it would be an interesting thing to test.
Separate the UI thread from main() (the thread doing the core app logic).
Yes, many OS's suggest spinning up a worker thread, but by default an app is single-threaded. The default in BeOS is 2 threads.
To the original poster, I'd like to point out that BeOS didn't (and Haiku doesn't) use a different compiler. What pg was saying was that we need a better compiler + language. Right now the programmer must manage every detail of the threads. A few abstractions are available - OpenMP, Apple's Grand Central Dispatch, etc. They don't really make highly parallel implementations though. The field is ripe for disruption.
Look at Verilog/VHDL for an example of a fully parallelized language.