Pengaturcaraan C

Posix Mutex dengan Pengaturcaraan C

Posix Mutex dengan Pengaturcaraan C
Artikel hari ini akan difokuskan pada penggunaan Posix Mutex dengan pengaturcaraan C di Linux Mint 20. Walau bagaimanapun, sebelum menuju ke contoh utama kami, kami ingin membersihkan beberapa terminologi terlebih dahulu, supaya anda dapat dengan mudah memahami contoh senario yang akan kami kongsi dengan anda. Dalam sistem operasi, konsep threading digunakan secara meluas. Thread pada dasarnya adalah sub-proses yang didelegasikan dengan tugas yang berbeza. Anda boleh mempertimbangkan contoh berikut untuk memahami cara kerja utas.

Katakan ada utas utama A, yang tugasnya adalah untuk mengira jumlah pemboleh ubah w dan y di mana w = x + 1, dan y = z + 2. Nilai pemboleh ubah x dan z akan diambil oleh pengguna. Dalam senario ini, kita dapat membuat dua utas, B dan C. Tugas benang B adalah mengambil nilai pemboleh ubah x dari pengguna, menambahnya dengan 1, dan menyimpannya dalam pemboleh ubah w. Tugas utas C adalah mengambil nilai pemboleh ubah z dari pengguna, menambahnya dengan 2, dan kemudian menyimpannya dalam pemboleh ubah y. Akhirnya, kedua-dua utas ini akan menyerahkan hasil ini ke utas utama A, yang kemudian akan mengira jumlahnya dan memaparkan hasil akhir.

Sekiranya kita tidak akan membuat utas dalam senario ini, maka semua tugas akan dilakukan oleh utas utama A dalam waktu yang jauh lebih besar. Dengan cara ini, utas dapat melakukan pengiraan anda dengan cekap tanpa kelewatan yang tidak perlu. Namun, ada keprihatinan yang sangat besar dengan penggunaan benang, yang dikenal sebagai "kondisi perlumbaan". Ini adalah keadaan di mana dua utas cuba mengakses dan mengubah data yang sama, sehingga membiarkannya tidak konsisten. Sebagai pengaturcara, tujuan kami adalah untuk mengelakkan keadaan perlumbaan dengan cara yang paling anggun.

Penyelesaian yang paling biasa digunakan untuk mengelakkan keadaan perlumbaan adalah penggunaan Mutex. Mutex bermaksud pengecualian bersama, dan pada dasarnya memberikan kita mekanisme penguncian yang menghalang akses dan pengubahsuaian data kritikal oleh lebih dari satu pengguna pada satu masa. Dengan cara ini, ketekalan data terjamin. Posix pada dasarnya adalah perpustakaan yang memberikan kita fungsi bawaan yang berbeza yang menjadikan pelaksanaan utas dan Mutex lebih mudah. Dengan contoh berikut, kami akan cuba mempelajari penggunaan Posix Mutex dengan pengaturcaraan C di Linux Mint 20.

Contoh Menggunakan Posix Mutex dengan Pengaturcaraan C di Linux Mint 20

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

Langkah # 1: Membuat Program Menunjukkan Penggunaan Posix Mutex dengan Pengaturcaraan C di Linux Mint 20

Pertama sekali, kami akan membuat a .fail cpp pada sistem Linux Mint 20 kami. Kami hanya akan pergi ke folder Laman Utama kami, membuat dokumen kosong, dan menamakannya Mutex.cpp. Sekali kita .fail cpp dibuat, kami akan membukanya dengan penyunting teks. Selepas itu, kami akan menaip kod yang ditunjukkan dalam gambar di bawah ini untuk kami .fail cpp:

Kod yang ditunjukkan dalam dua gambar di atas mencipta dua utas yang berbeza. Thread pertama sesuai dengan Job # 1, sedangkan thread kedua sesuai dengan Job # 2. Kemudian kami telah membuat fungsi contoh bernama "Mutex Function". Dalam fungsi ini, pertama-tama kita mengunci pemboleh ubah kunci Mutex, dan ia hanya akan dibuka setelah thread # 1 menyelesaikan Job # 1. Begitu juga, pemboleh ubah kunci Mutex sekali lagi akan dikunci oleh utas # 2 sehingga selesai Pekerjaan # 2. "Fungsi Mutex" ini disebut dengan fungsi "utama".

Langkah # 2: Menyusun Program C di Linux Mint 20

Setelah menyimpan .fail cpp, kita sekarang akan menyusunnya melalui terminal Linux Mint 20 dengan arahan berikut:

$ gcc -o Mutex Mutex.cpp -pthread

Di sini, "Mutex", setelah bendera "-o", merujuk pada nama file objek yang akan dibuat, sedangkan "Mutex.cpp ”adalah nama asal .fail cpp. Bendera "-pthread" diperlukan untuk menyusun program ini kerana program ini ditulis semasa menggunakan perpustakaan "pthread". Sekiranya anda menghilangkan bendera ini, program anda tidak akan disusun dan akan membuat beberapa kesalahan. Penyusunan berjaya kami .fail cpp tidak akan menghasilkan mesej di terminal, seperti yang ditunjukkan dalam gambar di bawah:

Langkah # 3: Menjalankan Program C di Linux Mint 20

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

$ ./ Mutex

Dalam keluaran Mutex kami.program cpp, anda akan melihat bahawa Job 1 pertama telah dimulakan, yang bermaksud bahawa thread # 1 telah memperoleh kunci Mutex. Selepas itu, Kerja 1 selesai setelah beberapa lama. Kemudian, Job 2 bermula, yang bermaksud bahawa thread # 2 telah memperoleh kunci Mutex. Ini hanya akan dibuka setelah Job 2 selesai.

Kesimpulannya

Artikel ini memberikan penjelasan mendalam tentang penggunaan Posix Mutex dengan pengaturcaraan C di Linux Mint 20. Mutex boleh digunakan dengan sangat berkesan untuk mengelakkan keadaan perlumbaan semasa memprogram dengan hanya memasukkan perpustakaan Posix atau pthread dalam kod C kami. Ini bukan sahaja dapat memastikan ketekalan data tetapi juga menjadikan pemprosesan lebih efisien.

Perkara terbaik mengenai penggunaan perpustakaan Posix di Linux ialah kita tidak perlu memasang perisian, pakej atau penyusun khusus untuknya. Kod C hanya boleh ditulis di mana-mana editor teks lalai di Linux dan dapat disusun dan dijalankan dengan penyusun gcc atau g ++ lalai. Ini terbukti sebagai lapisan kemudahan dan kemudahan tambahan dalam penggunaan Posix Mutex dengan pengaturcaraan C di Linux Mint 20.

Aplikasi Pemetaan Gamepad Terbaik untuk Linux
Sekiranya anda suka bermain permainan di Linux dengan gamepad dan bukannya sistem input papan kekunci dan tetikus biasa, ada beberapa aplikasi berguna...
Alat Berguna untuk Pemain Linux
Sekiranya anda suka bermain permainan di Linux, kemungkinan anda telah menggunakan aplikasi dan utiliti seperti Wine, Lutris dan OBS Studio untuk meni...
HD Remastered Games untuk Linux yang Tidak Pernah Melancarkan Linux Sebelumnya
Banyak pembangun dan penerbit permainan hadir dengan penghapus HD permainan lama untuk memperpanjang usia francais, harap peminat meminta keserasian d...