Bir süreç ile iş parçacığı arasındaki teknik fark nedir?
Süreç gibi bir kelimenin aşırı kullanıldığını hissediyorum ve ayrıca donanım ve yazılım konuları da var. Erlang]1 gibi dillerde hafif süreçlere ne dersiniz? Bir terimi diğerine tercih etmek için kesin bir neden var mı?
Hem süreçler hem de iş parçacıkları bağımsız yürütme dizileridir. Tipik fark, iş parçacıklarının (aynı sürecin) paylaşılan bir bellek alanında, süreçlerin ise ayrı bellek alanlarında çalışmasıdır.
Hangi "donanım" vs "yazılım" konularından bahsettiğinizden emin değilim. İş parçacıkları bir CPU özelliğinden ziyade bir işletim ortamı özelliğidir (CPU tipik olarak iş parçacıklarını verimli kılan işlemlere sahiptir).
Erlang "process" terimini kullanır çünkü paylaşılan bellekli bir çoklu programlama modeli ortaya koymaz. Bunları "threads" olarak adlandırmak, paylaşılan belleğe sahip olduklarını ima eder.
Bir uygulama bir veya daha fazla işlemden oluşur. Bir süreç, en basit ifadeyle, çalışan bir programdır. Süreç bağlamında bir veya daha fazla iş parçacığı çalışır. İş parçacığı, işletim sisteminin işlemci zamanını tahsis ettiği temel birimdir. Bir iş parçacığı, başka bir iş parçacığı tarafından yürütülmekte olan kısımlar da dahil olmak üzere, işlem kodunun herhangi bir bölümünü yürütebilir. Fiber, uygulama tarafından manuel olarak zamanlanması gereken bir yürütme birimidir. Fiberler, kendilerini zamanlayan iş parçacıkları bağlamında çalışır.
Buradan]1 çalınmıştır.
Hem iş parçacıkları hem de süreçler, işletim sistemi kaynak tahsisinin atomik birimleridir (yani, CPU zamanının aralarında nasıl bölündüğünü açıklayan bir eşzamanlılık modeli ve diğer işletim sistemi kaynaklarına sahip olma modeli vardır). Aralarında bir fark vardır:
Greg Hewgill yukarıda "process" kelimesinin Erlang anlamı konusunda haklıydı ve burada Erlang'ın neden süreçleri hafif yapabileceğine dair bir tartışma var.