POSIX'te "Gerekçe: Sistem Arayüzleri Genel Bilgileri" bölümündeki " Sinyal Üretimi ve Dağıtımı " başlıklı yazı şöyle diyor
Bir işlem için oluşturulan sinyaller yalnızca bir iş parçacığına iletilir. Dolayısıyla, birden fazla evre bir sinyal almaya uygunsa, bir tane seçilmelidir. İplik seçimi, hem mümkün olan en geniş uyumlu uygulama aralığına izin vermek hem de uygulamalara, farklı dişler arasında teslimat kolaylığı açısından farklılıklar olması halinde, sinyali "mümkün olan en kolay" iş parçacığına verme özgürlüğü vermek için tamamen uygulamaya bırakılmıştır.
Gönderen signal(7)
Linux sistemi üzerinde manuel:
Bir bütün olarak bir süreç (örneğin kullanılarak gönderildiğinde kill(2)
) veya belirli bir iplik (örneğin, belirli bir makinenin çalıştırılmasının bir sonucu olarak üretilen SIGSEGV ve SIGFPE gibi belirli sinyaller için) bir sinyal üretilebilir (ve dolayısıyla beklemede). dil talimatı, belirli bir iş parçacığını hedef alan sinyaller gibi iş parçacığı yönelimlidir pthread_kill(3)
). İşleme yönelik bir sinyal, halihazırda sinyali bloke edilmemiş olan ipliklerden herhangi birine iletilebilir. Birden fazla iş parçacığının sinyali engellenmemişse, çekirdek sinyali iletmek için isteğe bağlı bir iş parçacığı seçer.
Ve içinde pthreads(7)
:
İş parçacıklarının farklı alternatif sinyal yığını ayarları vardır. Ancak, yeni bir iş parçacığının alternatif sinyal yığını ayarları, onu oluşturan iş parçacığından kopyalanır, böylece iş parçacıkları başlangıçta alternatif bir sinyal yığınını paylaşır (çekirdek 2.6.16'da sabitlenir).
Gönderen pthreads(3)
OpenBSD sistemine kılavuzu (alternatif bir yaklaşım, bir örnek olarak):
Sinyal işleyicileri normal olarak yürürlükte olan iş parçacığının yığınında çalıştırılır.
(Şu anda çoklu işlemcili bir makinede aynı anda birden fazla iş parçacığı yürütüldüğünde bunun nasıl ele alındığının farkında değilim)
POSIX iş parçacıklarının eski LinuxThread uygulaması, yalnızca belirli tek iş parçacıklarının sinyaller tarafından hedeflenmesine izin verdi. Gönderen pthreads(7)
Linux sisteminde:
LinuxThreads, sürece yönelik sinyaller kavramını desteklemez: sinyaller yalnızca belirli evrelere gönderilebilir.