C Programlama

C Programlama ile POSIX Konu

C Programlama ile POSIX Konu
Bir iş parçacığı, bir işlem içinde çalışan küçük bir örnektir. İş parçacıkları bir süreç oluşturmak için birleşir ve sürecin bazı özelliklerine sahiptirler; bu nedenle, hafif süreçler olarak kabul edilirler. İplik bağımsız değil, tıpkı bir süreç gibi. Bunun yerine, bir süreci derlemek ve oluşturmak için birlikte çalışırlar. Yine de, tıpkı bir süreç gibi, bir iş parçacığının da kendi PC'si (Program Sayacı) ve yığın alanı ile birlikte belirli bir kayıt seti vardır.

POSIX Konusu:

Linux platformlarında, C ve C++ dilleri, iş parçacığıyla ilgili her türlü işlev için pthread standart API'si. Aynı zamanda, kullanıcıların eşzamanlı işlemlerin akması için birçok iş parçacığı oluşturmasına izin veren bir POSIX iş parçacığı olarak da bilinir. Sistemi elde etmek için çekirdek üzerinde iş parçacıkları uygulamak için çok çekirdekli sistemlerde veya işlemcilerde en iyi şekilde kullanılır.

Uygulama:

Bu pthread'i dahil etmek gerekiyor.başlangıçta komut dosyasındaki h başlık dosyası. Bu, pthreads kitaplığının işlevlerinin kullanılmasına yardımcı olacaktır. c dosyasını çalıştırmak için aşağıdaki komutlar

$ cc -pthread dosyası.c

VEYA

$ cc -lpthread dosyası.c

pthreads kitaplığında tanımlanan işlevler şunları içerebilir:

pthread_create:

Yeni bir iş parçacığı oluşturmak için kullanılır

pthread_create parametreleri:

Aşağıdaki parametrelere sahiptir:

Konu: Bu, işaretsiz bir tamsayı değerine işaretçi görevi görür. Oluşturulan iş parçacığının iş parçacığı kimliğini döndürür.

Öznitellikler: Bu parametre bir yapıya işaretçi görevi görür. Zamanlama politikası olabilecek bir iş parçacığının niteliklerini ve yığın adresini vb. tanımlamak için kullanılır.

start_routine: Bu parametre, iş parçacığı tarafından uygulanan bir alt yordam için bir işaretçidir.

argüman: Bu parametre, argümanın başlangıcında önceden tanımlanmış fonksiyona farklı argümanlarla geçersiz kılmak için bir işaretçidir

Sözdizimi:

>> int pthread_create
(pthread_t * thread, const pthread_attributes_t * attr, void * (*start_routine)(void *), void *argüman);

pthread_exit:

Bir iş parçacığını sonlandırmak veya sonlandırmak için kullanılır

pthread_exit parametreleri:

Yöntemin/işlemin sonunda kullanılan yöntem, bir tamsayı için zorunlu bir gösterge olan bir parametre alımını kabul eder. İş parçacığının sonlanacağı şekilde iş parçacığının durumunu saklar. Global bir değişken olmalı. Bu, eğer uygunsa, sıradaki bir sonraki iş parçacığının iş parçacığına katılmasına izin verecektir.

Sözdizimi:

>> void pthread_exit(void *retval);

pthread_join:

Bu, iş parçacığının sonlandırılması için bekleme sırasında kullanılan bir işlevdir.

pthread_join için parametreler:

Burada kullanılan parametre:

thread_id: Sıradaki iş parçacığının beklediği iş parçacığının kimliğidir.

thread_return: Çıkış durumunu tanımladığımız belirli bir konuma işaretçi görevi gören parametredir.

Sözdizimi:

>> int pthread_join(pthread_t thread_identification, void **thread_return);

pthread_self:

Bu, şu anda satırda olan iş parçacığının kimliğini almak için kullanılan bir yöntemdir.

Sözdizimi:

>> pthread_t pthread_self(void);

pthread_equal:

Bu yöntem, iki iş parçacığının eşdeğer olup olmadığı durumlarda karşılaştırmak için kullanılır. İki iş parçacığı aynıysa, işlev yanıt olarak sıfırdan farklı bir değer döndürür.

Sözdizimi:

>> int pthread_equal(pthread_t thread1, pthread_t thread2);

pthread_cancel:

Bu yöntem, iptal talebi göndermek için kullanılır

pthread_cancel için parametre:

İsteği iptal etmek için kullanılan parametrenin girilmesi zorunludur.

Sözdizimi:

>> int pthread_cancel(pthread_t threadName);

pthread_detach:

Bu, bir iş parçacığını ayırmak için kullanılan yöntemdir. Sonlandırmada katılmak için herhangi bir iş parçacığına ihtiyaç duymaz. İş parçacığında çalışan tüm kaynaklar, iş parçacığı ayrılır ayrılmaz serbest bırakılır.

pthread_detacr parametresi:

Zorunlu parametre iş parçacığı kimliğini kabul eden parametredir. Ayrılmak bir zorunluluktur.

Sözdizimi:

>> int pthread_detach(pthread_t iş parçacığı);

Basit kod:

Yukarıda açıklanan işlevin uygulamasını gösteren örnek bir kod aşağıda verilmiştir. Bu işlevleri derlemek için bir gcc derleyicisi kullandık.

// Thread fonksiyonlarını gösterecek program
#Dahil etmek
#Dahil etmek
#Dahil etmek
// UNIX/LINUX sistemlerinde olmazsa olmaz olan POSIX iş parçacığını çağırma
pthread_t tid[2];
void*Fonksiyon(void *arg)

işaretsiz uzun i = 0;
pthread_t kimliği = pthread_self();
if(pthread_equal(id,tid[0]))
// Threadlerin eşit olması koşulu

printf("\n İlk iş parçacığı işleniyor\n");

Başka

printf("\n İkinci iş parçacığı işleniyor \n");

// İşlenmekte olan iş parçacıkları.
for(i=0; ben<(0x255);i++);
NULL döndür;

int ana(boşluk)

int ben = 0;
dehşet içinde;
// Yeni bir iş parçacığı oluşturma
süre (ben < 2)

hata = pthread_create(&(tid[i]), NULL, &Function, NULL);
eğer (hata != 0)
printf("\n Konu oluşturulamadı :[%s]", strerror(hata));
Başka
printf("\n Konu başarıyla oluşturuldu\n");
// Konu başarıyla oluşturuldu
ben++;

uyku(5);
0 döndür;

Kod bir metin düzenleyicide yazılmıştır; seçiminize göre herhangi bir düzenleyiciyi kullanabilirsiniz. Ardından en sevdiğiniz konuma kaydedin.

Dosya bilgisayar sistemine kaydedilir ve ardından erişilir. Tarafımızdan kaydedilen dosyaya test adı verildi.c. Erişmek için terminal penceresine aşağıdaki komutu yazın:

$ sudo gcc testi.c -lpthread

Ardından, çıktıyı yürütmek için aşağıdaki komutu yazın:

$ ./a.dışarı

Beklenen çıktı:

Önceki koda yanıt olarak aldığımız çıktı aşağıda gösterilmiştir:

Sonuç:

Eğitim, iş parçacığı oluşturmanın temel sürecini ele aldı ve oluşturulmasında yaygın olarak kullanılan tüm yöntemleri tartıştı. İş parçacığı bir sürecin bir örneğidir. Daha sonra kullanıcılara, bilgisayar programlarında kullanabilmeleri için sözdizimleri ile birlikte her bir işlem tarafından kullanılan ünlü parametreler üzerinde yürüdük. Burada ayrıca POSIX'te bir C programı oluşturma fikrini daha iyi anlamak için örnek olarak bir örnek kod paylaştık. Linux sisteminde kullandığımız derleyici gcc idi. Kullanıcılar, tercihlerine göre başka herhangi bir derleyiciyi de seçebilirler.

Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...