Pemrograman C

Utas POSIX dengan Pemrograman C

Utas POSIX dengan Pemrograman C
Utas adalah contoh kecil yang berjalan dalam suatu proses a. Utas bergabung untuk membuat proses, dan mereka memiliki beberapa properti proses; oleh karena itu, mereka dianggap sebagai proses yang ringan. Thread tidak berdiri sendiri, sama seperti sebuah proses. Melainkan mereka bekerja sama untuk mengkompilasi dan menciptakan sebuah proses. Namun, seperti sebuah proses, sebuah thread juga memiliki PC (Program Counter) dan register tertentu bersama dengan ruang stack.

Utas POSIX:

Di platform Linux, bahasa C dan C++ pthread API standar untuk semua jenis fungsi terkait thread. Ini juga dikenal sebagai utas POSIX yang memungkinkan pengguna membuat banyak utas untuk proses simultan mengalir. Ini paling baik digunakan dalam sistem atau prosesor multi-inti untuk mengimplementasikan utas pada kernel untuk mencapai sistem.

Penerapan:

Hal ini diperlukan untuk memasukkan pthread ini.h file header dalam skrip awalnya. Ini akan membantu dalam menggunakan fungsi perpustakaan pthreads. Untuk mengeksekusi file c, perintah berikut:

$cc -file pthread.c

ATAU

$cc -lpthread file.c

Fungsi yang didefinisikan di perpustakaan pthreads dapat mencakup:

pthread_create:

Ini digunakan untuk membuat utas baru

Parameter pthread_create:

Ini memiliki parameter berikut:

benang: Ini bertindak sebagai penunjuk ke nilai integer yang tidak ditandatangani. Ini mengembalikan id utas dari utas yang terbentuk.

atribut: Parameter ini bertindak sebagai penunjuk ke struktur. Ini digunakan untuk mendefinisikan atribut utas yang dapat menjadi kebijakan penjadwalan, dan alamat tumpukan, dll.

mulai_rutin: Parameter ini adalah penunjuk ke subrutin yang diimplementasikan oleh utas.

argumen: Parameter ini adalah penunjuk untuk membatalkan dengan argumen berbeda ke fungsi yang telah ditentukan sebelumnya di awal argumen

Sintaksis:

>> int pthread_create
(pthread_t * utas, const pthread_attributes_t * attr, void * (*start_routine)(void *), void *argument);

pthread_exit:

Ini digunakan untuk mengakhiri atau mengakhiri utas

Parameter pthread_exit:

Metode yang digunakan pada akhir metode/proses menerima parameter retval yang merupakan indikator wajib untuk bilangan bulat. Ini menyimpan status utas sedemikian rupa sehingga utas berakhir. Itu harus menjadi variabel global. Ini akan memungkinkan utas berikutnya dalam antrean untuk bergabung dengan utas jika tersedia.

Sintaksis:

>> void pthread_exit(void *retval);

pthread_join:

Ini adalah fungsi yang digunakan pada saat menunggu penghentian utas.

Parameter untuk pthread_join:

Parameter yang digunakan disini adalah:

utas_id: Ini adalah ID dari utas yang menunggu utas dalam antrean.

utas_kembali: Ini adalah parameter yang bertindak sebagai penunjuk ke lokasi tertentu di mana kita telah menetapkan status keluar.

Sintaksis:

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

pthread_self:

Ini adalah metode yang digunakan untuk mendapatkan id dari utas yang saat ini sejalan.

Sintaksis:

>> pthread_t pthread_self(void);

pthread_equal:

Metode ini digunakan untuk membandingkan jika dua utas setara atau tidak. Jika dua utas sama, maka fungsi akan mengembalikan nilai selain nol sebagai respons.

Sintaksis:

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

pthread_cancel:

Metode ini digunakan untuk mengirim permintaan pembatalan

Parameter untuk pthread_cancel:

Parameter yang digunakan wajib dimasukkan untuk membatalkan permintaan.

Sintaksis:

>> int pthread_cancel(pthread_t threadName);

pthread_detach:

Ini adalah metode yang digunakan untuk memisahkan utas. Tidak perlu utas apa pun untuk bergabung pada penghentian. Semua sumber daya yang berjalan di utas dilepaskan segera setelah utas terlepas.

Parameter pthread_detachr:

Ini adalah parameter yang menerima id utas parameter wajib. Ini adalah suatu keharusan untuk terlepas.

Sintaksis:

>> int pthread_detach(utas pthread_t);

Kode sampel:

Berikut adalah contoh kode untuk menunjukkan implementasi fungsi yang dijelaskan di atas. Kami menggunakan kompiler gcc untuk mengkompilasi fungsi-fungsi ini.

// Program untuk menampilkan fungsi utas
#termasuk
#termasuk
#termasuk
// Memanggil utas POSIX, yang harus dimiliki dalam sistem UNIX/LINUX
pthread_t tid [2];
void*Fungsi(void *arg)

unsigned panjang i = 0;
pthread_t id = pthread_self();
jika(pthread_equal(id,tid[0]))
// Kondisi untuk utas sama

printf("\n Utas pertama sedang diproses\n");

lain

printf("\n Thread kedua sedang diproses \n");

// Utas sedang diproses.
untuk(i=0; i<(0x255);i++);
kembali NULL;

int utama (kosong)

int saya = 0;
dalam teror;
// Membuat utas baru
ketika saya < 2)

kesalahan = pthread_create(&(tid[i]), NULL, &Fungsi, NULL);
jika (kesalahan != 0)
printf("\n Tidak bisa membuat thread :[%s]", strerror(error));
lain
printf("\n Thread berhasil dibuat\n");
// Utas berhasil dibuat
saya++;

tidur (5);
kembali 0;

Kode ditulis dalam editor teks; Anda dapat menggunakan editor apa pun berdasarkan pilihan Anda. Kemudian simpan di lokasi favorit Anda.

File disimpan dalam sistem komputer dan kemudian diakses. File yang kami simpan bernama test.c. Untuk mengaksesnya, ketik perintah berikut di jendela terminal:

$ sudo tes gcc.c -lpthread

Selanjutnya, untuk mengeksekusi output, ketik perintah berikut:

$ ./Sebuah.di luar

Keluaran yang diharapkan:

Output yang kami dapatkan sebagai respons terhadap kode sebelumnya ditunjukkan di bawah ini:

Kesimpulan:

Tutorial mencakup proses dasar pembuatan thread dan membahas semua metode yang umum digunakan dalam pembuatannya. Thread adalah sebuah instance dari sebuah proses. Kami kemudian memandu pengguna melalui parameter terkenal yang digunakan oleh setiap proses bersama dengan sintaks sehingga mereka dapat menggunakannya dalam program komputer mereka. Di sini kami juga membagikan contoh kode sebagai contoh untuk lebih memahami ide membuat program C di POSIX. Kompiler yang kami gunakan adalah gcc di sistem Linux. Pengguna dapat memilih kompiler lain juga berdasarkan preferensi mereka.

Game Remaster HD untuk Linux yang Belum Pernah Rilis Linux Sebelumnya
Banyak pengembang dan penerbit game datang dengan remaster HD dari game lama untuk memperpanjang umur waralaba, harap penggemar meminta kompatibilitas...
Cara Menggunakan AutoKey untuk Mengotomatiskan Game Linux
AutoKey adalah utilitas otomatisasi desktop untuk Linux dan X11, diprogram dengan Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsionalitas MA...
Cara Menampilkan Penghitung FPS di Game Linux
Game Linux mendapat dorongan besar ketika Valve mengumumkan dukungan Linux untuk klien Steam dan game mereka pada tahun 2012. Sejak itu, banyak game A...