Rumah  >  Soal Jawab  >  teks badan

java - 如何理解“不要通过共享内存来通信,而应该通过通信来共享内存”?

不要通过共享内存来通信,而应该通过通信来共享内存

这是一句风靡golang社区的经典语,对于刚接触并发编程的人,该如何理解这句话?

大家讲道理大家讲道理2763 hari yang lalu1837

membalas semua(4)saya akan balas

  • PHP中文网

    PHP中文网2017-04-18 10:55:51

    https://blog.golang.org/share...

    Artikel ini menjelaskan dengan lebih jelas bahawa jika anda menggunakan memori yang dikongsi, untuk mengendalikan keadaan perlumbaan dalam senario berbilang benang, anda perlu menguncinya, yang lebih menyusahkan untuk digunakan. Di samping itu, menggunakan terlalu banyak kunci dengan mudah boleh menjadikan logik kod program sukar difahami, dan boleh menyebabkan program buntu dengan mudah Selepas kebuntuan berlaku, adalah sangat sukar untuk menyelesaikan masalah, terutamanya apabila banyak kunci wujud di masa yang sama.

    Saluran bahasa go memastikan bahawa hanya satu goroutine boleh mengakses data di dalam pada masa yang sama, memberikan pembangun alat yang elegan dan mudah Oleh itu, kaedah asli go ialah menggunakan saluran untuk berkomunikasi dan bukannya menggunakan memori dikongsi untuk berkomunikasi.

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:55:51

    Saya rasa yang pertama bermakna semua orang mengekalkan negeri, dan yang kedua bermakna semua orang mengekalkan salinan negeri.

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 10:55:51

    Memori yang dikongsi akan melibatkan berbilang utas mengakses dan mengubah suai data pada masa yang sama Untuk memastikan keselamatan dan keterlihatan data, penguncian akan dilakukan agar selari menjadi bersiri, dan CPU juga akan sibuk dengan utas. Kunci. Adalah lebih baik untuk mengubah cara dan membuat salinan data Setiap utas mempunyai satu perkara, selagi satu utas tidak perlu mengambil kunci ini diserahkan dalam bentuk pemberitahuan. Threads untuk mencapai concurrency

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:55:51

    Malah, jika anda memahaminya dari perspektif yang diedarkan, ia akan menjadi lebih jelas.

    Sebagai contoh, dua proses ab beroperasi pada baris gilir mesej yang sama Jika memori dikongsi digunakan, adakah kedua-dua proses itu perlu dihadkan kepada mesin fizikal yang sama.

    Jika semasa reka bentuk, hanya antara muka baca dan tulis disediakan untuk baris gilir mesej, dan anda tidak perlu risau sama sekali tentang pelaksanaan dalaman, baris gilir mesej akan kelihatan seperti memori kongsi. Walau bagaimanapun, baris gilir mesej anda boleh berkomunikasi menggunakan soket.

    Jadi, ayat di atas, jangan gunakan memori yang dikongsi untuk melaksanakan komunikasi, bermakna tidak menghadkan program kepada satu mesin dari awal, tetapi menggunakan komunikasi, iaitu, untuk merangkum pelaksanaan dalaman dan menyediakan antara muka untuk melaksanakan operasi yang sepadan

    balas
    0
  • Batalbalas