▲ | okanat 5 days ago | |
It depends on what threads can do. Threads share memory with other threads and you can corrupt the data structure to force the other thread to do an unsafe / invalid operation. It can be as simple as changing the size of a vector from one thread while the other one accesses it. When executed sequentiality, the operations are safe. With concurrency all bets are off. Even with Go. Hence the argument in TFA. | ||
▲ | crawshaw 5 days ago | parent [-] | |
All bets aren’t off, we empirically measure the safety of software based on exploits. C memory handling is most of its exploits. Show me the exploits based on Go parallelism. This issue has been discussed publicly for 10 years yet the exploits have not appeared. That’s why it's a nice theoretical argument but does not hold up in practice. |