Pertanyaan yang diberi tag «thread-safety»

Sepotong kode aman untuk thread jika hanya memanipulasi struktur data dengan cara yang memungkinkan eksekusi kode ini secara konsisten dengan beberapa thread. Kode dapat berupa thread safe, aman bersyarat (perlu pengecualian bersama) atau tidak aman (hanya dapat digunakan dengan aman oleh satu thread).



8
Bagaimana cara kerja kunci sebenarnya?
Saya melihat bahwa untuk menggunakan objek yang tidak aman, kami membungkus kode dengan kunci seperti ini: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } Jadi apa yang terjadi ketika beberapa utas mengakses kode yang sama (mari kita asumsikan bahwa itu berjalan dalam …

3
Gunakan case untuk penjadwal RxJava
Di RxJava ada 5 penjadwal berbeda untuk dipilih: direct () : Membuat dan mengembalikan Penjadwal yang menjalankan pekerjaan segera di utas saat ini. trampoline () : Membuat dan mengembalikan Penjadwal yang antrean bekerja di utas saat ini untuk dieksekusi setelah pekerjaan saat ini selesai. newThread () : Membuat dan mengembalikan …

7
Apa sebenarnya fungsi reentrant?
Sebagian besar dari para kali , definisi reentrance yang dikutip dari Wikipedia : Suatu program komputer atau rutin digambarkan sebagai reentrant jika ia dapat dipanggil kembali dengan aman sebelum pemanggilannya yang sebelumnya selesai (mis. Ia dapat dijalankan dengan aman secara bersamaan). Untuk menjadi reentrant, program komputer atau rutin: Tidak boleh …


7
Antrian. Antrian vs. collections.deque
Saya perlu antrian tempat beberapa utas dapat memasukkan berbagai hal, dan beberapa utas dapat dibaca. Python memiliki setidaknya dua kelas antrian, Antrian. Antrian dan collections.deque, dengan yang pertama tampaknya menggunakan yang terakhir secara internal. Keduanya mengklaim aman dalam dokumentasi. Namun, dokumen Antrian juga menyatakan: collections.deque adalah implementasi alternatif dari antrian …

9
Mengotomatiskan pola kode InvokeRequired
Saya telah menyadari betapa seringnya seseorang perlu menulis pola kode berikut dalam kode GUI yang digerakkan oleh event, di mana private void DoGUISwitch() { // cruisin for a bruisin' through exception city object1.Visible = true; object2.Visible = false; } menjadi: private void DoGUISwitch() { if (object1.InvokeRequired) { object1.Invoke(new MethodInvoker(() => …

4
Apa yang Membuat Metode Thread-safe? Apa aturannya?
Apakah ada aturan / pedoman keseluruhan untuk apa yang membuat metode thread-safe? Saya mengerti bahwa mungkin ada sejuta situasi, tetapi bagaimana dengan secara umum? Apakah ini sederhana? Jika metode hanya mengakses variabel lokal, itu aman untuk thread. Itu saja? Apakah itu berlaku untuk metode statis juga? Satu jawaban, diberikan oleh …
156 c#  thread-safety 

5
Apakah pengulangan thread ConcurrentHashMap values ​​aman?
Di javadoc untuk ConcurrentHashMap adalah sebagai berikut: Pengambilan operasi (termasuk get) umumnya tidak memblokir, jadi mungkin tumpang tindih dengan operasi pembaruan (termasuk menempatkan dan menghapus). Pengambilan mencerminkan hasil dari operasi pembaruan yang paling baru selesai diadakan saat onsetnya. Untuk operasi agregat seperti putAll dan clear, pengambilan secara bersamaan dapat mencerminkan …

5
Concurrent HashSet <T> dalam .NET Framework?
Saya memiliki kelas berikut. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); } Saya perlu mengubah bidang "Data" dari utas yang berbeda, jadi saya ingin beberapa pendapat tentang implementasi utas saat ini yang aman. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); public void Add(string Val){ lock(Data) Data.Add(Val); } public …


5
Apakah metode statis yang tidak disinkronkan thread aman jika mereka tidak mengubah variabel kelas statis?
Saya bertanya-tanya apakah Anda memiliki metode statis yang tidak disinkronkan, tetapi tidak mengubah variabel statis apakah aman? Bagaimana jika metode ini membuat variabel lokal di dalamnya? Misalnya, apakah kode berikut ini aman untuk digunakan? public static String[] makeStringArray( String a, String b ){ return new String[]{ a, b }; } …


8
Apakah! = Periksa utas aman?
Saya tahu bahwa operasi gabungan seperti i++tidak aman karena melibatkan beberapa operasi. Tetapi apakah memeriksa referensi dengan sendirinya operasi yang aman? a != a //is this thread-safe Saya mencoba memprogram ini dan menggunakan beberapa utas tetapi tidak gagal. Saya kira saya tidak bisa mensimulasikan balapan di mesin saya. EDIT: public …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.