Eksekusi asinkron vs sinkron, apa artinya sebenarnya? [Tutup]

1186

Apa perbedaan antara eksekusi asinkron dan sinkron?

tush1r
sumber
... atau eksekusi "berurutan vs paralel" ... meskipun paralelisme sejati membutuhkan banyak inti, jika tidak secara logis disisipkan.
samis
8
Saya dulu bingung kedua istilah, dan cara saya lakukan untuk mengingat perbedaannya adalah melempar "A" pertama di " A JAX" yang merupakan singkatan dari asinkron, dalam JavaScript ketika Anda melakukan permintaan dengan AJAX dalam satu lingkaran yang tidak mereka tunggu satu sama lain atau memblokir prosesnya, karena browser tidak ingin memengaruhi pengalaman pengguna dengan situs web yang dibekukan, semua permintaan dikirim hampir bersamaan tanpa menunggu respons dari permintaan sebelumnya. Itu asinkron
Akuntan

Jawaban:

1748

Saat Anda menjalankan sesuatu secara serempak, Anda menunggu sampai selesai sebelum pindah ke tugas lain. Saat Anda menjalankan sesuatu secara tidak sinkron, Anda dapat beralih ke tugas lain sebelum selesai.

Yang sedang berkata, dalam konteks komputer ini diterjemahkan menjadi mengeksekusi proses atau tugas pada "utas" lainnya. Utas adalah serangkaian perintah (blok kode) yang ada sebagai unit kerja. Sistem operasi dapat mengelola beberapa utas dan menetapkan utas sepotong ("irisan") dari waktu prosesor sebelum beralih ke utas lain untuk memberikan giliran untuk melakukan pekerjaan. Pada intinya (maafkan kata-kata), sebuah prosesor dapat dengan mudah menjalankan perintah, ia tidak memiliki konsep melakukan dua hal sekaligus. Sistem operasi mensimulasikan ini dengan mengalokasikan irisan waktu ke utas yang berbeda.

Sekarang, jika Anda memasukkan beberapa core / prosesor ke dalam campuran, maka hal-hal BISA benar-benar terjadi pada saat yang sama. Sistem operasi dapat mengalokasikan waktu ke satu utas pada prosesor pertama, kemudian mengalokasikan blok waktu yang sama ke utas lainnya pada prosesor yang berbeda. Semua ini adalah tentang memungkinkan sistem operasi untuk mengelola penyelesaian tugas Anda sementara Anda dapat melanjutkan dalam kode Anda dan melakukan hal-hal lain.

Pemrograman asinkron adalah topik yang rumit karena semantik tentang bagaimana hal-hal saling berhubungan ketika Anda dapat melakukannya pada saat yang sama. Ada banyak artikel dan buku tentang masalah ini; lihat!

Adam Robinson
sumber
246
Yang benar-benar membingungkan saya adalah bahwa sinkron berarti "pada saat yang sama", namun ketika digunakan dalam arti di atas, itu berarti berurutan , dan asinkron berarti "tidak pada saat yang sama" ... ?? Adakah yang bisa menjelaskan konflik ini?
Damien Roche
45
@ Zenph: Dalam konteks ini, seluruh blok kode adalah apa yang kami perhatikan. Sinkron berarti bahwa blok dieksekusi pada saat yang sama (walaupun, ya, komponen dieksekusi secara berurutan). Asynchronous berarti bahwa blok tidak semuanya dijalankan pada waktu yang bersamaan.
Adam Robinson
8
Eksekusi asinkron juga terjadi ketika suatu program mengirim pesan ke antrian (seperti dalam sistem pengiriman pesan, seperti ActiveMQ, WebSphere MQ, HornetQ, MSMQ, dll.). Dalam hal ini, panggilan asinkron tidak melibatkan pemrograman multithread atau penanganan konkurensi pada level OS.
Paulo Merson
287
Anehnya, "Sinkron" berarti "menggunakan jam yang sama" jadi ketika dua instruksi sinkron, mereka menggunakan jam yang sama dan harus terjadi satu demi satu. "Asynchronous" berarti "tidak menggunakan jam yang sama" sehingga instruksi tidak berkaitan dengan langkah satu sama lain. Itu sebabnya terlihat mundur, istilahnya tidak merujuk pada instruksi hubungan satu sama lain. Ini merujuk ke setiap hubungan instruksi ke jam. Semoga itu bisa membantu.
Tom Padilla
14
Istilahnya berasal dari teknik. en.wikipedia.org/wiki/Asynchronous_system
Tom Padilla
1151

Sinkron / Asinkron TIDAK PUNYA DILAKUKAN DENGAN MULTI-THREADING.

Sinkron atau Disinkronkan berarti "terhubung", atau "tergantung" dalam beberapa cara. Dengan kata lain, dua tugas sinkron harus saling mengetahui, dan satu tugas harus dijalankan dengan cara yang bergantung pada yang lain, seperti menunggu untuk memulai sampai tugas lainnya selesai.
Asynchronous berarti mereka benar-benar independen dan tidak ada yang harus mempertimbangkan yang lain dengan cara apa pun, baik dalam inisiasi atau dalam eksekusi.

Sinkron (satu utas):

1 thread ->   |<---A---->||<----B---------->||<------C----->|

Sinkron (multi-utas):

thread A -> |<---A---->|   
                        \  
thread B ------------>   ->|<----B---------->|   
                                              \   
thread C ---------------------------------->   ->|<------C----->| 

Asinkron (satu utas):

         A-Start ------------------------------------------ A-End   
           | B-Start -----------------------------------------|--- B-End   
           |    |      C-Start ------------------- C-End      |      |   
           |    |       |                           |         |      |
           V    V       V                           V         V      V      
1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->| 

Asynchronous (multi-Threaded):

 thread A ->     |<---A---->|
 thread B ----->     |<----B---------->| 
 thread C --------->     |<------C--------->|
  • Mulai dan titik akhir tugas A, B, C diwakili oleh <, >karakter.
  • Irisan waktu CPU diwakili oleh bilah vertikal |

Secara teknis, konsep sinkron / asinkron benar - benar tidak ada hubungannya dengan utas . Meskipun, secara umum, tidak biasa untuk menemukan tugas asinkron berjalan pada utas yang sama, adalah mungkin, (lihat di bawah untuk contoh) dan adalah umum untuk menemukan dua atau lebih tugas yang dijalankan secara serempak pada utas yang terpisah ... Tidak, konsep sinkron / asinkron harus dilakukan hanya dengan apakah tugas kedua atau selanjutnya dapat dimulai sebelum tugas lain (pertama) selesai, atau harus menunggu. Itu semuanya. Apa utas (atau utas), atau proses, atau CPU, atau memang, perangkat keras apa, tugas yang dijalankan tidak relevan. Memang, untuk membuat poin ini saya telah mengedit grafik untuk menunjukkan ini.


CONTOH ASYNCHRONOUS:

Dalam memecahkan banyak masalah teknik, perangkat lunak ini dirancang untuk membagi masalah keseluruhan menjadi beberapa tugas individu dan kemudian menjalankannya secara tidak sinkron. Pembalikan matriks, atau masalah analisis elemen hingga, adalah contoh yang baik. Dalam komputasi, menyortir daftar adalah contohnya. Rutin quicksort, misalnya, membagi daftar menjadi dua daftar dan melakukan quicksort pada masing-masing, memanggil dirinya sendiri (quicksort) secara rekursif. Dalam kedua contoh di atas, dua tugas dapat (dan sering) dijalankan secara tidak sinkron. Mereka tidak perlu berada di utas terpisah. Bahkan mesin dengan satu CPU dan hanya satu utas eksekusi dapat dikodekan untuk memulai pemrosesan tugas kedua sebelum yang pertama selesai. Satu-satunya kriteria adalah bahwa hasil dari satu tugas tidak perlu sebagai input untuk tugas lainnya. Selama waktu mulai dan berakhirnya tugas tumpang tindih, (hanya mungkin jika output dari keduanya tidak diperlukan sebagai input ke yang lain), mereka dieksekusi secara tidak sinkron, tidak peduli berapa banyak utas yang digunakan.

CONTOH SINKRON:

Setiap proses yang terdiri dari beberapa tugas di mana tugas harus dieksekusi secara berurutan, tetapi satu harus dieksekusi di komputer lain (Ambil dan / atau perbarui data, dapatkan penawaran harga dari layanan keuangan, dll.). Jika berada di mesin yang terpisah itu berada di utas terpisah, apakah sinkron atau asinkron.

Charles Bretana
sumber
92
mengapa di dunia kata-kata memiliki arti berbeda di komputer ... selalu tinggalkan aku untuk kembali ke ini ... dari kamus .. sinkron: terjadi pada saat yang bersamaan. asinkron: tidak terjadi pada saat yang bersamaan.
Muhammad Umer
17
tetapi seperti yang Anda lihat di komputer, itu artinya sebaliknya
Muhammad Umer
5
Mungkin nomenklatur didasarkan pada apakah inisiasi tugas "disinkronkan" dengan penyelesaian tugas lain?
Charles Bretana
11
@MuhammadUmer: di dunia komputer, yang terjadi pada saat yang sama disebut concurrency.
Roy Ling
5
IMHO, gambar-gambar ini tidak semuanya menggambarkan pelaksanaan tugas yang sinkron dan asiknhron. Misalnya, gambar kedua menyiratkan bahwa tugas yang tidak sinkron memerlukan beberapa utas. Sebenarnya tidak. Dan tugas-tugas itu harus berjalan secara paralel, yang juga bukan keharusan. Atau, gambar untuk "sinkron" dengan sangat baik menunjukkan bagaimana tugas-tugas telah dikirim secara asinkron dari beberapa situs panggilan dan sekarang dieksekusi dalam penjadwal tugas serial;) IMO, gambar-gambar itu menyesatkan.
CouchDeveloper
642

Secara sederhana:

SINKRONIS

Anda berada dalam antrian untuk mendapatkan tiket film. Anda tidak bisa mendapatkannya sampai semua orang di depan Anda mendapatkannya, dan hal yang sama berlaku untuk orang-orang yang antri di belakang Anda.

ASYNCHRONOUS

Anda berada di sebuah restoran dengan banyak orang lain. Anda memesan makanan Anda. Orang lain juga dapat memesan makanan mereka, mereka tidak perlu menunggu makanan Anda dimasak dan disajikan kepada Anda sebelum mereka dapat memesan. Di dapur restoran pekerja terus memasak, melayani, dan menerima pesanan. Orang-orang akan mendapatkan makanan mereka segera setelah dimasak.

themightysapien
sumber
10
Jika seseorang menginginkan apel dibandingkan dengan apel; jika Anda ingin skenario restoran menjadi sinkron, maka ketika Anda memesan makanan, semua orang di restoran harus menunggu makanan Anda tiba sebelum mereka dapat memesan makanan mereka dll. Sekarang ini sepertinya skenario yang benar-benar bodoh, tetapi dalam dunia komputasi skenario ini bisa bermanfaat. Katakanlah setiap pelanggan tidak dapat memutuskan apa yang mereka inginkan, dan sebaliknya ingin melihat apa yang dipesan pelanggan sebelumnya untuk memutuskan apakah mereka menginginkannya atau tidak, maka masuk akal bahwa mereka harus menunggu makanan tiba sebelum memesan.
Fonix
Sekadar menambahkan ... bisa jadi operasi dijalankan seperti dalam antrian dalam operasi Asynchronous ... Tapi itu tidak wajib sama sekali.
Sreekanth Karumanaghat
5
contoh kehidupan yang sangat sederhana dan nyata
Manish
Untuk mendorong contoh Anda lebih jauh, mereka dapat mempertimbangkan beberapa gerbang untuk menjual tiket. Oleh karena itu, setiap baris dapat bekerja secara tidak sinkron dari jalur lainnya tetapi secara sinkron di dalam dirinya!
Saeed Ahadian
334

Penjelasan sederhana melalui analogi

Eksekusi Sinkron

Bos saya orang yang sibuk. Dia menyuruh saya untuk menulis kode. Saya katakan padanya: Baik. Saya memulai dan dia melihat saya seperti burung pemakan bangkai, berdiri di belakang saya, dari bahu saya. Saya seperti "Bung, WTF: mengapa Anda tidak pergi dan melakukan sesuatu saat saya menyelesaikan ini?"

dia seperti: "Tidak, saya menunggu di sini sampai Anda selesai." Ini sinkron.

Eksekusi Asinkron

Bos memberitahu saya untuk melakukannya, dan alih-alih menunggu di sana untuk pekerjaan saya, bos pergi dan melakukan tugas-tugas lain. Ketika saya menyelesaikan pekerjaan saya, saya hanya melaporkan kepada bos saya dan berkata: "Saya SELESAI!" Ini adalah Eksekusi Asinkron.

(Ambil saran saya: TIDAK PERNAH bekerja dengan bos di belakang Anda.)

BKSpurgeon
sumber
29
Saya DILAKUKAN ... bahkan lebih lucu ketika Anda menganggap ini sebagai pengunduran diri.
Daedric
91

Eksekusi sinkron berarti eksekusi terjadi dalam satu seri. A->B->C->D. Jika Anda memanggil rutinitas itu, Aakan berjalan, lalu selesai, lalu Bakan mulai, lalu selesai, lalu Cakan mulai, dll.

Dengan eksekusi Asynchronous , Anda memulai rutinitas, dan membiarkannya berjalan di latar belakang saat Anda memulai berikutnya, kemudian di beberapa titik, katakan "tunggu sampai ini selesai". Ini lebih seperti:

Mulai A->B->C->D->Tunggu untuk Asampai akhir

Keuntungannya adalah bahwa Anda dapat mengeksekusi B,, Cdan atau Dsaat Amasih berjalan (di latar belakang, pada utas terpisah), sehingga Anda dapat mengambil keuntungan lebih baik dari sumber daya Anda dan memiliki lebih sedikit "hang" atau "menunggu".

Reed Copsey
sumber
@ Reed Copsey ...... Terima kasih atas penjelasan yang bagus ..... Hanya ingin info lebih lanjut tentang Async-Exec ...... Berdasarkan jawaban Anda di Async Exec .... Mulai A-> B-> C-> D-> Tunggu A selesai ... Jadi semua A, B, C, D dimulai pada suatu waktu ...... dan mereka menunggu A untuk selesai ..... Begitu juga B hanya akan selesai setelah A selesai, dan C setelah B dan seterusnya ......? Atau bisakah B pertama selesai dan kemudian A bisa selesai?
Devrath
8
@ Kemarahan Operasi dapat diselesaikan dalam urutan apa pun.
Reed Copsey
59

Singkatnya, sinkronisasi mengacu pada dua titik awal dan akhir proses , BUKAN milik mereka eksekusi . Dalam contoh ini, titik akhir Proses A disinkronkan dengan titik awal Proses B:

SINKRONIS
   | -------- A -------- |
                     | -------- B -------- |

Proses asinkron, di sisi lain, tidak memiliki awal dan titik akhir mereka disinkronkan:

ASYNCHRONOUS
   | -------- A -------- |
         | -------- B -------- |

Di mana Proses A tumpang tindih Proses B, mereka berjalan bersamaan atau serempak (definisi kamus), maka kebingungan.

UPDATE: Charles Bretana meningkatkan jawabannya , jadi jawaban ini sekarang hanya mnemonik sederhana (berpotensi disederhanakan).

entr0p3te
sumber
2
salinan jawaban Charles Bretana
Dinesh Saini
2
@DineshSaini - Diagram saya sedikit berbeda. Untuk lebih jelasnya, saya menempatkan A di atas B dalam kedua kasus, menekankan apakah titik awal & akhir mereka disinkronkan. Diagram Charles Bretana menempatkan proses sinkron dalam urutan tanpa "menyinkronkan" apa pun. (Saya akan mengomentari jawabannya di bawah ini untuk "meningkatkan" itu, tetapi menyadari bahwa akan lebih mudah hanya dengan menampilkan diagram baru.)
entr0p3te
Diagram yang bagus. Saya pikir cara untuk memanggil yang teratas SYNC, adalah bahwa awal dan akhir A dalam diagram atas secara efektif pada saat yang sama, dalam arti bahwa tidak ada peristiwa lain yang campur tangan, atau dapat mengganggu penyelesaian A. Sinkronisasi dapat merujuk pada satu tugas tunggal secara terpisah, seperti menambah register CPU, yang awal dan akhirnya sangat dekat, sehingga secara efektif menjadi kamus-sinkron.
Dean Radcliffe
55

Sinkron berarti pemanggil menunggu respons atau penyelesaian, asinkron bahwa pemanggil berlanjut dan respons datang kemudian (jika ada).

Sebagai contoh:

    static void Main(string[] args)
    {
        Console.WriteLine("Before call");
        doSomething();
        Console.WriteLine("After call");
    }

    private static void doSomething()
    {
        Console.WriteLine("In call");
    }

Ini akan selalu muncul:

Before call
In call
After call

Tetapi jika kita membuat doSomething asynchronous (beberapa cara untuk melakukannya), maka hasilnya bisa menjadi:

Before call
After call
In call

Karena metode membuat panggilan asinkron akan segera melanjutkan dengan baris kode berikutnya. Saya katakan "bisa", karena urutan eksekusi tidak dapat dijamin dengan operasi asynch. Itu bisa juga dieksekusi seperti aslinya, tergantung pada timing thread, dll.

Ragoczy
sumber
34

Saya pikir ini agak bulat tentang penjelasan tetapi masih mengklarifikasi menggunakan contoh kehidupan nyata.

Contoh kecil:

Katakanlah memainkan audio melibatkan tiga langkah:

  1. Mendapatkan lagu yang dikompres dari harddisk
  2. Dekompresi audio.
  3. Putar audio yang tidak dikompresi.

Jika pemutar audio Anda melakukan langkah 1,2,3 secara berurutan untuk setiap lagu maka itu sinkron. Anda harus menunggu beberapa saat untuk mendengarkan lagu sampai lagu tersebut benar-benar diambil dan didekompresi.

Jika pemutar audio Anda melakukan langkah 1,2,3 independen satu sama lain, maka ia tidak sinkron. yaitu. Saat memutar audio 1 (langkah 3), jika ia mengambil audio 3 dari harddisk secara paralel (langkah 1) dan itu akan mendekompresi audio 2 secara paralel. (langkah 2) Anda akan berakhir dalam mendengarkan lagu tanpa menunggu terlalu banyak untuk mengambil dan mendekompres.

aJ.
sumber
32

Sinkronisasi dan operasi async adalah tentang urutan eksekusi tugas baru dalam kaitannya dengan tugas saat ini. Dua tugas di atas meja: tugas saat ini dan tugas baru

Synchronous (blocking) - menyiratkan bahwa tugas akan dieksekusi satu per satu. Tugas berikutnya dimulai hanya setelah tugas sebelumnya selesai. Task 2tidak dimulai sampai Task 1selesai

Asynchronous (non-blocking) - menyiratkan bahwa tugas mengembalikan kontrol segera dengan janji untuk mengeksekusi kode dan memberitahukan tentang hasil nanti (misalnya panggilan balik, fitur). Task 2dieksekusi meskipun Task 1tidak selesai

JADI jawaban tentang sinkronisasi dan asinkron: di iOS , di Android

yoAlex5
sumber
Diagram dalam contoh multi-utas sinkron muncul untuk menggambarkan secara bersamaan mengeksekusi utas?
samis
@ sαmosΛris Anda dapat mempertimbangkan Utas seperti sumbu X yang menunjukkan timeline
yoAlex5
Sumbu x secara konvensional digunakan sebagai dimensi spasial; sumbu t untuk waktu - perbedaan penting yang ditemukan dalam analisis kompleksitas algoritma.
samis
23

Secara sederhana, eksekusi asinkron melakukan hal-hal di latar belakang.

Misalnya jika Anda ingin mengunduh file dari internet, Anda mungkin menggunakan fungsi sinkron untuk melakukan itu, tetapi itu akan memblokir utas Anda sampai file selesai diunduh. Ini dapat membuat aplikasi Anda tidak responsif terhadap input pengguna apa pun.

Alih-alih, Anda dapat mengunduh file di latar belakang menggunakan metode asinkron. Dalam hal ini fungsi unduhan segera kembali dan eksekusi program berlanjut secara normal. Semua operasi pengunduhan dilakukan di latar belakang dan program Anda akan diberi tahu saat selesai.

Michał Piaskowski
sumber
1
bagaimana teladan Anda akan lebih cepat. Pada akhirnya Anda tidak dapat memutar file sampai selesai periode pengunduhan. Bisakah Anda jelaskan? Saya kira saya tidak mengerti async waktu itu dan mungkin itu saya, tetapi apa langkah atau proses lain yang akan dilakukan saat proses lain sedang berjalan (mendapatkan unduhan)? Maksud saya apa yang dapat Anda lakukan sampai Anda menerima proses async itu kembali (unduh) di aplikasi Anda ... Saya tidak mengerti. Jadi apa, Anda masih harus menunjukkan kepada pengguna semacam mekanisme menunggu apa pun dalam situasi apa pun?
PositiveGuy
4
Tidak harus lebih cepat. Ini tentang tidak memblokir utas utama, sehingga dapat memproses input pengguna jenis lain. Misalnya pengguna mungkin ingin membatalkan unduhan atau mulai mengunduh file lain secara bersamaan.
Michał Piaskowski
19

Sebagai contoh yang sangat sederhana,

SINKRONIS

Bayangkan 3 siswa sekolah diperintahkan untuk menjalankan lomba lari estafet di jalan.

Murid 1 berlari jaraknya, berhenti dan melewati tongkat ke 2. Tidak ada orang lain yang mulai berjalan.

1------>
        2.
                3.

Ketika siswa ke-2 mengambil tongkat, dia mulai berlari jarak yang diberikan.

      1.
        2------>
                3.

Siswa ke-2 melepaskan tali sepatunya. Sekarang dia sudah berhenti dan mengikat lagi. Karena itu, waktu akhir ke-2 telah diperpanjang dan waktu mulai ke-3 telah tertunda.

      1.
        --2.--->
                3.

Pola ini berlanjut hingga yang ketiga mengambil tongkat dari 2 dan menyelesaikan lomba.

ASYNCHRONOUS

Bayangkan saja 10 orang acak berjalan di jalan yang sama. Mereka tidak berada dalam antrian tentu saja, hanya berjalan secara acak di tempat yang berbeda di jalan dalam langkah yang berbeda.

Tali sepatu orang ke-2 terlepas. Dia berhenti untuk mengikatnya lagi.

Tapi tidak ada yang menunggunya diikat. Semua orang masih berjalan dengan cara yang sama seperti yang mereka lakukan sebelumnya, dengan kecepatan yang sama dengan mereka.

10-->    9-->
   8--> 7-->   6-->
 5-->     4-->
1-->   2.    3-->
Dasun Nirmitha
sumber
18

Saya membuat gif untuk menjelaskan ini, berharap dapat membantu: lihat, baris 3 asinkron dan yang lainnya sinkron. semua baris sebelum baris 3 harus menunggu sampai sebelum garis menyelesaikan pekerjaannya, tetapi karena baris 3 tidak sinkron, baris berikutnya (baris 4), jangan menunggu baris 3, tetapi baris 5 harus menunggu baris 4 untuk menyelesaikan pekerjaannya, dan baris 6 harus menunggu baris 5 dan 7 untuk 6, karena baris 4,5,6,7 tidak asinkron. jalur 3 asinkron dan yang lainnya sinkron

Abolfazl Miadian
sumber
12

Saat menjalankan urutan seperti: a> b> c> d>, jika kita mengalami kegagalan di tengah eksekusi seperti:

a
b
c
fail

Kemudian kita mulai lagi dari awal:

a
b
c
d

ini sinkron

Namun, jika kita memiliki urutan yang sama untuk dieksekusi: a> b> c> d>, dan kita memiliki kegagalan di tengah:

a
b
c
fail

... tetapi alih-alih memulai kembali dari awal, kami memulai kembali dari titik kegagalan:

c
d

... ini dikenal sebagai tidak sinkron.

Mohamed Tharik
sumber
1
dapatkah Anda lebih tepat dengan apa yang Anda maksudkan dengan memberikan lebih banyak konteks pada contoh Anda
krichard
5
Jawaban ini sama sekali tidak benar.
Marquis of Lorne
7

Anda bingung Sinkron dengan Seri Paralel vs. Sinkron artinya semua pada saat yang sama. Syncronized berarti terkait satu sama lain yang dapat berarti secara seri atau pada interval yang tetap. Sementara program sedang melakukan semua, itu berjalan secara seri. Dapatkan kamus ... ini sebabnya kami minum teh yang tidak manis. Anda memiliki teh atau teh manis.

Joe
sumber
3
Sebenarnya, "disinkronkan" mengacu pada hubungan antara instruksi dan jam. BUKAN hubungan antara instruksi itu sendiri. Itu sebabnya tampak mundur "sinkron" sebenarnya berarti satu demi satu: tetapi instruksi disinkronkan ke jam. "Asinkron" berarti "kapan saja, saya tidak peduli kapan itu terjadi": instruksi tidak perlu disinkronkan ke jam. Ya, ada definisi kamus, tetapi Anda harus memastikan Anda mendefinisikan situasi yang benar.
Tom Padilla
1
Sinkron tidak berarti 'semuanya pada saat bersamaan' dalam komputasi. Anda membingungkan sinkronisasi dengan sinkron, dan 'sejajar versus seri' dengan teh dan teh manis. Jawaban tidak masuk akal sama sekali.
Marquis of Lorne
7

Sinkron pada dasarnya berarti bahwa Anda hanya dapat menjalankan satu hal pada satu waktu. Asinkron berarti Anda dapat menjalankan banyak hal sekaligus dan Anda tidak harus menyelesaikan mengeksekusi hal yang sekarang untuk melanjutkan ke yang berikutnya.

Mike
sumber
Bukankah banyak hal yang dieksekusi pada saat yang sama disebut Multithreading daripada asinkron.
Sreekanth Karumanaghat
7

Gunakan contoh instruksi untuk membuat sarapan

  1. Tuangkan secangkir kopi.
  2. Panaskan wajan, lalu goreng dua telur.
  3. Goreng tiga potong daging asap.
  4. Bersulang dua potong roti.
  5. Tambahkan mentega dan selai ke roti bakar.
  6. Tuang segelas jus jeruk.

Jika Anda memiliki pengalaman memasak, Anda akan menjalankan instruksi tersebut secara tidak sinkron. Anda akan mulai menghangatkan wajan untuk telur, kemudian mulai bacon. Anda memasukkan roti ke dalam pemanggang, lalu memulai telur. Pada setiap langkah proses, Anda akan memulai tugas, lalu mengalihkan perhatian Anda ke tugas-tugas yang siap untuk perhatian Anda.

Memasak sarapan adalah contoh yang baik dari pekerjaan asinkron yang tidak paralel. Satu orang (atau utas) dapat menangani semua tugas ini. Melanjutkan analogi sarapan, satu orang dapat membuat sarapan tidak sinkron dengan memulai tugas berikutnya sebelum yang pertama selesai. Memasak berlangsung tanpa memperhatikan apakah seseorang menontonnya. Segera setelah Anda mulai menghangatkan wajan untuk telur, Anda bisa mulai menggoreng bacon. Setelah daging mulai, Anda bisa memasukkan roti ke dalam pemanggang.

Untuk algoritme paralel, Anda memerlukan beberapa koki (atau utas). Satu akan membuat telur, satu bacon, dan seterusnya. Masing-masing akan fokus hanya pada satu tugas itu. Setiap juru masak (atau utas) akan diblokir serentak menunggu bacon siap untuk dibalik, atau roti panggang menyembur.

Referensi dari konsep pemrograman Asynchronous

Hla Min Swe
sumber
4

Operasi sinkron berfungsi sebelum kembali ke pemanggil.

Operasi asinkron berfungsi (sebagian besar atau semua) berfungsi setelah kembali ke pemanggil.

Maxim Eliseev
sumber
tautannya sudah mati.
Semoga
1

Berkenaan dengan definisi " pada saat yang sama " dari eksekusi sinkron (yang terkadang membingungkan), berikut adalah cara yang baik untuk memahaminya:

Eksekusi Sinkron : Semua tugas dalam satu blok kode semua dieksekusi pada waktu yang bersamaan.

Eksekusi Asinkron : Semua tugas dalam satu blok kode tidak semuanya dieksekusi pada saat yang sama.

docta_faustus
sumber
Saya akan setuju dengan ini lebih banyak jika Anda mengatakan 'secara efektif pada saat yang sama', atau 'untuk tujuan praktis' .. Saya pikir downvote adalah untuk pernyataan yang tidak akurat bahwa hal-hal sebenarnya dilakukan pada saat yang sama.
Dean Radcliffe
1

Saya pikir cara yang baik untuk memikirkannya adalah lomba lari klasik

Sinkron : Proses seperti anggota tim yang sama, mereka tidak akan mengeksekusi sampai mereka menerima tongkat (akhir pelaksanaan proses / pelari sebelumnya) dan mereka semua bertindak sinkron satu sama lain.

Asinkron : Di mana proses seperti anggota tim yang berbeda di trek balap estafet yang sama, mereka akan berlari dan berhenti, asinkron satu sama lain, tetapi dalam ras yang sama (keseluruhan program eksekusi).

Apakah masuk akal?

Sharif
sumber
1

Definisi bahasa Inggris yang berbeda dari Sinkronisasi adalah Di Sini

Koordinat; menggabungkan.

Saya pikir itu adalah definisi yang lebih baik daripada "Terjadi pada saat yang sama". Itu juga definisi, tapi saya tidak berpikir itu yang cocok dengan cara yang digunakan dalam Ilmu Komputer.

Jadi tugas asinkron tidak terkoordinasi dengan tugas-tugas lain, sedangkan tugas sinkron dikoordinasikan dengan tugas-tugas lain, jadi seseorang selesai sebelum yang lain dimulai.

Bagaimana hal itu dicapai adalah pertanyaan yang berbeda.

Greg Gum
sumber
0

Sinkron berarti eksekusi jalan antrian satu per satu tugas akan dieksekusi. Misalkan hanya ada kendaraan yang perlu dibagikan di antara teman untuk mencapai tujuan mereka satu per satu kendaraan akan dibagikan.
Dalam kasus asinkron, setiap teman bisa mendapatkan kendaraan sewaan dan mencapai tujuannya.

Rohit
sumber
0

Ya sinkron berarti pada saat yang sama, secara harfiah, artinya melakukan semua pekerjaan bersama. banyak manusia / benda di dunia dapat melakukan banyak hal sekaligus, tetapi jika kita melihat komputer, katanya berarti sinkron di mana proses bekerja bersama yang berarti proses bergantung pada pengembalian satu sama lain dan itulah mengapa mereka dieksekusi satu setelah yang lain dalam urutan yang benar. Sedangkan asinkron berarti di mana proses tidak bekerja bersama, mereka dapat bekerja pada saat yang sama (jika ada pada multithread), tetapi bekerja secara independen.

Saptarshi
sumber