Apabila bekerja dengan berbilang rangkaian, adalah nasihat biasa untuk menggunakan baris gilir ke atas senarai. Ini menimbulkan persoalan sama ada senarai sememangnya tidak selamat apabila diakses secara serentak.
Bertentangan dengan kepercayaan popular, senarai itu sendiri selamat untuk benang dalam Python. Pelaksanaan seperti CPython memastikan bahawa akses kepada senarai dilindungi oleh GIL (Global Interpreter Lock), manakala pelaksanaan lain menggunakan kunci berbutir halus atau jenis data yang disegerakkan. Oleh itu, senarai itu sendiri tidak boleh menjadi rosak kerana akses serentak.
Walau bagaimanapun, walaupun senarai sebagai struktur data dilindungi, data di dalamnya tidak. Pertimbangkan operasi berikut:
L[0] += 1
Operasi kenaikan ini bukan atom, bermakna jika beberapa utas cuba melaksanakannya secara serentak, mereka mungkin tidak semua menambah nilai dengan betul. Ini kerana kemas kini kepada kandungan senarai tidak disegerakkan.
Untuk menangani isu ini, baris gilir digunakan dan bukannya senarai. Baris gilir sememangnya menyediakan operasi atom untuk menambah dan mengalih keluar elemen, memastikan pengubahsuaian dikendalikan dengan betul walaupun apabila diakses serentak oleh berbilang benang.
Menggunakan baris gilir membantu mengelakkan keadaan perlumbaan dan memastikan item yang betul diambil atau dialih keluar daripada senarai, mengelakkan rasuah data.
Atas ialah kandungan terperinci Mengapa Baris Diutamakan Daripada Senarai Apabila Menggunakan Berbilang Benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!