cari

Rumah  >  Soal Jawab  >  teks badan

objective-c - 线程同步和异步的区别?IOS中如何实现多线程的同步?

这个关于线程的问题怎么实现?

PHP中文网PHP中文网2888 hari yang lalu573

membalas semua(3)saya akan balas

  • 高洛峰

    高洛峰2017-04-28 09:07:18

    Izinkan saya memberitahu anda pemahaman saya sendiri. Saya tidak memahaminya secara mendalam.

    Penyegerakan benang berlaku di bawah berbilang benang mengakses sumber yang sama pada masa yang sama Untuk memastikan akses yang selamat dan cekap, adalah perlu untuk menyelesaikan satu siri masalah yang disebabkan oleh akses segerak.
    Sebagai contoh, dua orang mengambil epal dari bakul Jika seorang mengambilnya dan kemudian membiarkan yang lain mengambilnya, tidak akan ada masalah, tetapi kecekapannya tidak akan tinggi. (totalTime = timeOfA + timeOfB)
    Jika anda membiarkan mereka mengambilnya pada masa yang sama, anda mengambil satu dan saya mengambil satu, ini akan menjadi lebih cekap, tetapi akan ada masalah Jika kedua-dua orang mengambil epal, siapa perlu mendapatkannya? Pada masa ini, anda boleh Terdapat beberapa kaedah Apabila A mengambil epal, B menunggu dahulu, dan menunggu sehingga A mendapat epal sebelum B mengambilnya. Atau A hanya boleh mengambil apa yang di sebelah A, dan B hanya boleh mengambil apa yang di sebelah B. Ini akan menyelesaikan masalah.
    Kaedah paling penting pada iOS ialah menguncinya semasa akses dan membuka kuncinya selepas akses selesai. Mengenai apa yang perlu ditambah dan bagaimana untuk menguncinya, banyak maklumat di Internet adalah sangat terperinci.

    balas
    0
  • 为情所困

    为情所困2017-04-28 09:07:18

    同步 异步 线程同步, adalah konsep yang berbeza

    Contoh mengambil rakan sekelas dari tingkat atas

    Anda mengambil epal, dan kemudian saya mengambil epal Ini dipanggil 同步 pelaksanaan
    Anda dan saya mengambil epal pada masa yang sama. Ini dipanggil dua utas 异步 pelaksanaan laksanakan 异步 di sini, kami menggunakan 多线程 bermakna anda dan saya masing-masing tergolong dalam satu benang
    Kemudian akan ada masalah, bagaimana jika anda dan saya mencapai epal yang sama? Pada masa ini, anda dan saya perlu 线程同步, sebagai contoh: sesiapa yang melihat bakul terlebih dahulu akan mengunci bakul, biarkan orang lain menunggu, dan membuka kuncinya selepas mengambilnya

    balas
    0
  • ringa_lee

    ringa_lee2017-04-28 09:07:18

    Ramai orang berpendapat bahawa asynchronous bermaksud multi-threading. Terdapat perbezaan antara asynchronous dan multi-threading.

    Benang ialah kod, kod yang perlu dijalankan oleh CPU Menjalankan dua keping kod benang bersama-sama memberi orang perasaan tidak disekat. Tetapi ia masih kod. CPU masih menunggu di sana.

    Asynchronous terutamanya untuk io, fail io dan permintaan rangkaian io Anda tidak mahu io segerak menyekat proses, jadi terdapat kaedah tak segerak untuk meningkatkan responsif memerlukan sistem pengendalian untuk melanggan delegasi acara fungsi penutupan. Perkara yang sama tidak boleh dikatakan untuk multi-threading.

    Jika anda tahu sedikit tentang perkakasan, anda boleh merasai gangguan itu.

    Ambil epal yang dibincangkan semua orang sebagai contoh...
    Asynchronous bermaksud, anda beritahu komputer, dapatkan saya sebiji epal.
    Komputer akan menggunakan perkakasan Apple untuk bertindak balas kepada fungsi ini. Adakah ia mempunyai kaitan dengan CPU? Tiada lagi. Ia tidak akan melengahkan CPU.
    Apabila Apple meminta daripada rangkaian, yang mengambil Apple ialah kad rangkaian

    balas
    0
  • Batalbalas