
Seperti yang sudah Anda perhatikan, format seminar telah berevolusi dan mengambil bentuk baru: setiap seminar selanjutnya sekarang dikhususkan sepenuhnya untuk suatu topik. Yang kelima dikhususkan untuk topik Pengumpul Sampah dan dalam 10 jam mengungkapkan segala sesuatu yang mungkin, meninggalkan pertanyaan pribadi di belakang tanda kurung. Dan puncaknya adalah laporan tentang aplikasi praktis (pertanyaan yang menarik minat semua orang - "mengapa tahu semua ini ??")
Pertanyaan kedua, yang saya pikir semua orang ingin tahu, tetapi sebagai aturan, tidak punya waktu untuk ini, adalah pertanyaan bekerja dalam kode multi-threaded dan pertanyaan tentang perencanaan dan dukungan arsitekturnya. Pertanyaan-pertanyaan ini cukup kompleks, menakutkan, dan seringkali menjijikkan secara umum. Dan itulah mengapa pengembang biasa tidak melampaui konstruksi sinkronisasi paling sederhana. Tetapi ada begitu banyak hal menarik di sekitar :)
Belum lama ini, saya memahami satu kebenaran yang tampaknya sederhana: untuk memahami bagaimana abstraksi tingkat atas bekerja, Anda perlu memahami cara kerja abstraksi tingkat rendah. Dengan kata lain, untuk memahami cara bekerja dengan kode multi-threaded pada tingkat async / wait, Anda perlu mengetahui primitif sinkronisasi dan dasar-dasar kode multi-threaded lainnya di .NET setidaknya. Dan apa yang lebih baik - sedikit dari tingkat sistem operasi. Setelah itu, sebagian besar abstraksi tingkat atas akan menjadi jelas secara otomatis.
Pada seminar baru, yang kali ini tidak hanya menyangkut platform .NET, seperti sebelumnya, tetapi pada dasarnya mencakup platform apa pun (setelah semua, kode multithreaded bekerja berdasarkan abstraksi tingkat rendah), kami akan mengungkapkan topik ini dengan paling detail:
Rencana lokakarya
Dasar-dasarnya
Untuk memulainya, kami akan mempertimbangkan basis: semua yang kembali ke sistem operasi dan prosesor. Lagipula, setiap mekanik tingkat atas bekerja berdasarkan aturan yang lebih rendah. Ini akan mencakup dasar-dasar arsitektur prosesor, primitif sinkronisasi, dan API sistem operasi Windows dan Linux. Tahukah Anda bahwa ada beberapa jenis proses sendiri?
BCL, Penjadwal, Thread Lokal, STA / MTA ...
Setelah memeriksa abstraksi ini dan memeriksa aturan untuk bekerja dengannya, kami akan fokus pada abstraksi dasar platform itu sendiri: BCL, Thread Locals, pool thread, dan dasar-dasar lainnya. Abstraksi ini ada di mana-mana, tetapi contohnya adalah untuk platform .NET. Kami akan melihat hubungan dengan sistem operasi, kinerja mereka, serta penerapan dalam berbagai situasi. Terakhir, kami akan memahami banyak masalah yang belum tercapai: konteks sinkronisasi, STA / MTA, cara kerja Thread Locals, dan banyak lagi.
Dengan setiap abstraksi baru, ditambah mengingat fakta bahwa semuanya akan diberitahukan berdampingan: dalam satu hari, Anda akan mulai menghubungkan semua pengetahuan satu sama lain dan kami akan dengan lancar beralih ke berbagai mekanisme tingkat yang lebih tinggi: penjadwal, latar belakang, model pengembangan kode multi-threaded.
Algoritma bebas kunci
semua jalan ke async / menunggu. Dan pada akhirnya, kita akan melihat algoritma multithreading yang lebih maju. Kami akan menganalisis sepasang algoritma bebas kunci sehingga Anda masing-masing dapat membuatnya sendiri. Dan setelah itu kita akan belajar membuat persyaratan untuk pengembangan kita sendiri.
PLINQ / async-tunggu
Selanjutnya, setelah menyerap pengetahuan dasar-dasar, kita akan mulai mempelajari perpustakaan tingkat tinggi abstraksi: dari PLINQ hingga async / menunggu, menganalisis fitur-fitur bekerja dengan masing-masing. Maksud saya di sini adalah bahwa Anda kira-kira sudah terbiasa dengan perpustakaan itu sendiri dan kami akan menyelidiki masing-masing perpustakaan pada tingkat yang sedikit lebih hardcore.
Tentu saja, kita tidak akan dapat mengungkap topik Concurrency dalam satu hari: topik ini terlalu luas dan beragam. Karena alasan inilah CLRium # 6 akan berlangsung selama dua hari.
Rincian kontak