Lifler, koroinler ve yeşil iplikler arasında bir fark var mı ve eğer öyleyse ne?


57

Bugün internette lifler, koroinler ve yeşil iplikler hakkında birkaç makale okuyordum ve bu kavramların çok ortak yanı var gibi gözüküyor, ancak özellikle lifler ve koroinler hakkında konuştuğumuzda küçük farklılıklar var.

Onları birbirinden farklı kılan özlü, doğru bir özeti var mı?

Güncelleme: Ayırt edici koroinler ve lifler (N4024 C ++ taslak) belgesini özellikle lifler ve koroinler arasında farklılaşmakta iyi buluyorum.

Yanıtlar:


106

Bir Lif önleyici çoklu görev yerine birlikte çalışan çoklu görev kullanan bir hafif iplik. Bir çalışan lif açıkça başka bir lifin çalışmasına izin vermek için "verim" gerekir, bu da uygulamalarını çekirdek veya kullanıcı dişlerinden daha kolay hale getirir.

Bir Coroutine , belirli yerlerde yürütmeyi askıya alma ve sürdürme için birden fazla giriş noktasının kullanılmasına izin vermek için bir alt rutini genelleyen bir bileşendir. Alt rutinlerden farklı olarak, coroutinler daha sonra orijinal coroutine çağrıldığı noktaya geri dönebilecek olan diğer coroutinler çağırılarak çıkılabilir.

Bir Yeşil Konu temel işletim sistemi tarafından sanal makine (VM) yerine doğal tarafından planlanan bir iplik. Yeşil iş parçacıkları, yerel işletim sistemi özelliklerine güvenmeden çok iş parçacıklı ortamlara öykünür ve yerel iş parçacığı desteği olmayan ortamlarda çalışmalarını sağlamak için çekirdek alanı yerine kullanıcı alanında yönetilir.


13
Sadece kendim için söyleyebilirim - bu cevap benim için çok değerli. Bu konuda Robert ile görüşümü paylaşıyorum.
DejanLekic,

"Geniş konu başlıklarının özeti, bu içeriğin sunulmasına ve içeriğe odaklanan bir kültürün geliştirilmesine odaklanmış ve optimize edilmiş Wikipedia'nın uzmanlığıdır. Bu tür özetleri sağlama konusunda en istekli, en yetenekli ve tecrübeli insanlar, Stack Exchange'e değil, Wikipedia'ya gidiyor ... Bunu arama motorunda arayan insanlara genellikle doğrudan rekabet eden iki içerik örneği sunulacak, biri SE ağında, diğeri Vikipedi'de ... Yukarıda belirtilen sebeplerden dolayı, SE içeriğinin kıyaslandığında daha düşük görünmesi muhtemel ... "
gnat

Not: Koroinler ve lifler birbirleriyle yakından ilişkili olarak düşünülebilir - muhtemelen aynı şey. Koroutinler istenirse, çok az çabayla liflerle uygulanabilirler veya bunun tersi de geçerlidir.
cHao

9
Nasıl farklı olduklarını açıklamıyor. Bütün bu tanımlar oldukça eşdeğer görünüyor.
hasen

1
@gstackoverflow: Java konuları OS konularıdır. JVM bunları işletim sistemi üzerinden programlar.
Robert Harvey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.