Pemrograman C

Posix Mutex dengan Pemrograman C

Posix Mutex dengan Pemrograman C
Artikel hari ini akan difokuskan pada penggunaan Posix Mutex dengan pemrograman C di Linux Mint 20. Namun, sebelum menuju ke contoh utama kami, pertama-tama kami ingin menghapus beberapa terminologi, sehingga Anda dapat dengan mudah memahami skenario contoh yang akan kami bagikan dengan Anda. Dalam sistem operasi, konsep threading digunakan secara luas. Utas pada dasarnya adalah sub-proses yang didelegasikan dengan tugas yang berbeda. Anda dapat mempertimbangkan contoh berikut untuk memahami cara kerja utas.

Misalkan ada utas utama A, yang tugasnya menghitung jumlah variabel w dan y di mana w=x+1, dan y=z+2. Nilai variabel x dan z akan diambil oleh pengguna. Dalam skenario ini, kita dapat membuat dua utas, B dan C. Tugas utas B adalah mengambil nilai variabel x dari pengguna, menambahnya dengan 1, dan menyimpannya di variabel w. Tugas utas C adalah mengambil nilai variabel z dari pengguna, menambahnya dengan 2, dan kemudian menyimpannya di variabel y. Terakhir, kedua utas ini akan menyerahkan hasil ini ke utas utama A, yang kemudian akan menghitung jumlah mereka dan menampilkan hasil akhir.

Jika kami tidak akan membuat utas apa pun dalam skenario ini, maka semua tugas akan dilakukan oleh utas utama A dalam waktu yang jauh lebih besar. Dengan cara ini, utas dapat melakukan perhitungan Anda secara efisien tanpa penundaan yang tidak perlu. Namun, ada perhatian yang sangat besar dengan penggunaan benang, yang dikenal sebagai "kondisi balapan". Ini adalah situasi di mana dua utas mencoba mengakses dan memodifikasi data yang sama, sehingga membuatnya tidak konsisten. Sebagai seorang programmer, tujuan kami adalah menghindari kondisi balapan dengan cara yang paling anggun.

Solusi yang paling umum digunakan untuk menghindari kondisi balapan adalah penggunaan Mutex. Mutex adalah singkatan dari mutual exception, dan pada dasarnya menyediakan mekanisme penguncian yang mencegah akses dan modifikasi data penting oleh lebih dari satu pengguna pada satu waktu. Dengan cara ini, konsistensi data terjamin. Posix pada dasarnya adalah perpustakaan yang menyajikan kepada kita berbagai fungsi bawaan yang membuat implementasi utas dan Mutex menjadi lebih mudah. Dengan contoh berikut, kita akan mencoba mempelajari penggunaan Posix Mutex dengan pemrograman C di Linux Mint 20.

Contoh Penggunaan Posix Mutex dengan Pemrograman C di Linux Mint 20

Kami akan melakukan tiga langkah berikut untuk memandu Anda melalui penggunaan Posix Mutex dengan pemrograman C di Linux Mint 20.

Langkah #1: Membuat Program Mendemonstrasikan Penggunaan Posix Mutex dengan Pemrograman C di Linux Mint 20

Pertama-tama, kita akan membuat .cpp di sistem Linux Mint 20 kami. Kami hanya akan pergi ke folder Home kami, membuat dokumen kosong, dan beri nama Mutex.cpp. Sekali kita .file cpp dibuat, kami akan membukanya dengan editor teks. Setelah itu, kita akan mengetikkan kode yang ditunjukkan pada gambar di bawah ini ke .file cpp:

Kode yang ditunjukkan pada dua gambar di atas membuat dua utas berbeda. Utas pertama sesuai dengan Pekerjaan #1, sedangkan utas kedua sesuai dengan Pekerjaan #2. Kemudian kami telah membuat fungsi sampel bernama "Fungsi Mutex". Dalam fungsi ini, pertama-tama kita mengunci variabel kunci Mutex, dan itu hanya akan dibuka setelah utas #1 selesai Pekerjaan #1. Demikian pula, variabel kunci Mutex akan kembali dikunci oleh utas #2 hingga menyelesaikan Pekerjaan #2. "Fungsi Mutex" ini disebut dengan fungsi "utama".

Langkah #2: Kompilasi Program C di Linux Mint 20

Setelah menyimpan .cpp, kita sekarang akan mengkompilasinya melalui terminal Linux Mint 20 dengan perintah berikut:

$ gcc -o Mutex Mutex.cpp -pthread

Di sini, "Mutex", setelah bendera "-o", mengacu pada nama file objek yang akan dibuat, sedangkan "Mutex.cpp” adalah nama aslinya .file cpp. Bendera “-pthread” diperlukan untuk mengkompilasi program ini karena program ini ditulis saat menggunakan pustaka “pthread”. Jika Anda menghilangkan tanda ini, program Anda tidak akan dikompilasi dan akan membuat beberapa kesalahan. Kompilasi yang sukses dari kami .File cpp tidak akan menghasilkan pesan apa pun di terminal, seperti yang ditunjukkan pada gambar di bawah ini:

Langkah #3: Menjalankan Program C di Linux Mint 20

Setelah file objek bernama "Mutex" telah dibuat, kita dapat menjalankannya menggunakan perintah berikut:

$ ./Mutex

Dalam output dari Mutex kami.cpp, Anda akan melihat bahwa Pekerjaan 1 pertama telah dimulai, yang berarti bahwa utas #1 telah memperoleh kunci Mutex. Setelah itu, Pekerjaan 1 selesai setelah beberapa waktu. Kemudian, Pekerjaan 2 dimulai, yang berarti bahwa utas # 2 telah memperoleh kunci Mutex. Itu hanya akan dibuka setelah Job 2 selesai.

Kesimpulan

Artikel ini memberikan penjelasan mendalam tentang penggunaan Posix Mutex dengan pemrograman C di Linux Mint 20. Mutex dapat digunakan dengan sangat efektif untuk menghindari kondisi balapan saat memprogram hanya dengan menyertakan pustaka Posix atau pthread dalam kode C kami. Ini tidak hanya akan memastikan konsistensi data tetapi juga akan membuat pemrosesan jauh lebih efisien.

Hal terbaik tentang menggunakan perpustakaan Posix di Linux adalah kita bahkan tidak perlu menginstal perangkat lunak, paket, atau kompiler khusus untuk itu. Kode C hanya dapat ditulis dalam editor teks default apa pun di Linux dan dapat dikompilasi dan dijalankan dengan kompiler gcc atau g++ default. Ini terbukti menjadi lapisan tambahan kemudahan dan kenyamanan dalam penggunaan Posix Mutex dengan pemrograman C di Linux Mint 20.

5 Produk Mouse Komputer Ergonomis Terbaik untuk Linux
Apakah penggunaan komputer yang lama menyebabkan rasa sakit di pergelangan tangan atau jari Anda?? Apakah Anda menderita persendian yang kaku dan teru...
Cara Mengubah Pengaturan Mouse dan Touchpad Menggunakan Xinput di Linux
Sebagian besar distribusi Linux dikirimkan dengan pustaka "libinput" secara default untuk menangani kejadian input pada sistem. Ini dapat memproses ke...
Petakan ulang tombol mouse Anda secara berbeda untuk perangkat lunak yang berbeda dengan Kontrol Tombol X-Mouse
Mungkin Anda membutuhkan alat yang dapat membuat kontrol mouse Anda berubah dengan setiap aplikasi yang Anda gunakan. Jika demikian, Anda dapat mencob...