Aber sich daran aufzuhaengen ist etwas pedantisch.
Hmm. Der ganze Absatz hat für mich geklungen nach "ach, Synchronisationsprobleme jeder Art sind einfach Instanzen des Dining-Philosopher-Patterns, und das ist ist trivial, und es gibt massig Lösungen". Wenns nicht so gemeint war, OK.
ZitatWie so oft unterscheiden sich unsere Meinungen praktisch nur durch die Terminologie: Der shared state ist fuer mich der wesentliche Unterschied zwischen Thread und Prozess ("different threads of the same process share some resources while different processes do not", WP). In Erlang/Haskell wird deshalb immer von Prozessen gesprochen.
Wenn ich in C mit pthreads eine pure Funktion in einem neuen Thread starte, ist das dann ein Prozess? Wenn ich in Erlang eine impure Funktion in einem neuen Prozess starte, ist das dann ein Thread?
Ich glaube, wir meinen schon das selbe, aber C mit einer Thread-Library, die Erlang-ähnliche Message-Primitive bereitstellt, wäre nicht weniger sauber oder zuverlässig als Erlang. In beiden hat der Programmierer die Möglichkeit, sich in den Fuß zu schießen, und in beiden muß er mitdenken, um das zu vermeiden. (Erlang hat den gewissen Vorteil beim Komfort, daß Datenstrukturen automatisch quasi "const" sind, und daß umständliche Speicherallokationen hinter der Termsyntax versteckt sind.)