fhe fact that posix and the c standard library are standard is very good. the fact that neither is actually safe to use kinda sucks, and the fact that none of it was ever designed with multiple threads or cores in mind makes broken things too easy to make.
can we do better?
@zensaiyuki Doesn't posix occasionally get updated with thread related features?
@hef that’s a very different thing from changing the entire system, and breaking backwards compatibility in order to create a system that is actually designed *for* threads.
@hef like, yeah, sure, it’s got bolt on thread support. that’s why it sucks.

@zensaiyuki I suppose that's the cost of never breaking backwards compatibility.

I've been impressed with golang's synchronization primitives being "goroutine" aware. porting that kind of system into c/c++ would be challenging to get working with old code

@hef the real problem is that “thread” is a bad primitive which puts too much trust in users and programmers by default.
@zensaiyuki What would be a better model?
@hef there’s actually about half a dozen concurrency models you can use depending on what you need to do. just like how we didn’t just replace GOTO with one thing. we have functions, switch statements, for loops, maps/reduce and so on.
@hef so, for instance, a hell of a lot can get done with just a shared nothing concurrent map function.
goroutines are another good primitive. GPU shaders.