Segera, pada 29-30 November di St. Petersburg dan 6-07 Desember di Moskow, kami akan meluncurkan seminar NET . Kali ini bertema multithreading dan berdaya saing. Kami sudah menulis tentang ini beberapa kali di Habré, tetapi hari ini ada alasan terpisah untuk ini: seminar ini benar - benar eksklusif . Pengoperasian primitif sinkronisasi hibrid akan dijelaskan: Monitor
. Ya, hal kecil yang familier itu layak mendapat laporan terpisah. Lagi pula, dalam pekerjaannya ia memperhitungkan baik frekuensi prosesor dan jumlah inti, memperhitungkan konvoi kunci / kelaparan dan pada umumnya sangat rumit.
Dan di akhir artikel hiburan, saya akan mengusulkan untuk membahas beberapa QUIZ tentang multithreading.

Skenario kecil dari lokakarya
Hal terpenting yang berasal dari sistem operasi adalah penjadwalan thread. Setelah semua, mereka dapat bekerja secara paralel satu sama lain (ketika mereka berjalan pada core yang berbeda), dan lebih sering (jika kita berbicara tentang utas yang sama) - secara berurutan. Bagaimanapun, OS tidak memberikan banyak waktu untuk eksekusi - untuk semua orang, setelah itu memberikan waktu untuk orang lain. Yang kedua - untuk segmen ini - kuantum - jumlah waktu yang berbeda dapat dialokasikan. Misalnya, tergantung pada versi OS yang kami gunakan: server atau pengguna, apakah utas UI adalah utas proses dengan jendela aktif saat ini. Ketiga, ada prioritas dan konsep "crowding out multitasking", ketika aliran Anda, hanya setelah menerima kuantum yang berharga, dapat kehilangan itu, karena utas lain dengan prioritas yang lebih tinggi terbentuk. Ternyata aplikasi kita sangat bergantung pada lingkungan tempat aplikasi itu bekerja. Sebagai contoh, beberapa layanan perhitungan akan terasa paling baik di versi server OS (atau dengan pengaturan kinerja yang sesuai) ketika tidak ada layanan lain pada mesin sama sekali: kuanta akan panjang, akan ada banyak waktu kuantum.
Tapi di sini muncul pertanyaan lain: jika utas kami pada konfigurasi ini membuat kunci tingkat kernel (misalnya, Semaphore (1)), utas kedua sampai ke kunci dan masuk ke kunci ini, maka ia akan tetap berada di server OS lebih lama dari yang ada. akan di kebiasaan. Mengapa Ya, karena irisan waktu server adalah 6 kali lebih lama dari klien, dan utas ini pertama-tama harus menunggu sampai aliran pertama mencapai titik rilis kunci, dan kemudian ketika mendapat kuantum baru.
Namun, ada bantuan untuk kasus seperti itu: ketika kunci dilepaskan, semua utas yang mengharapkannya sementara (dengan 1 kuantum) memiliki prioritas di atas utas lainnya dan utas kedua akan menerima waktu prosesor segera.
CLRium 6
Tiga paragraf ini adalah 5% singkat dari laporan ke-4. Dan dia sudah kaya akan informasi yang dapat digunakan di semua tingkatan: mulai dari bekerja dengan sinkronisasi primitif hingga bekerja dengan perpustakaan tingkat tinggi. Dan program kami adalah ini:
- Kami akan melihat jenis prosesnya. Ada banyak dari mereka, dan kami menggunakan dua dari mereka dari kekuatan: ini biasa dan ModernApp;
- Tiga laporan berturut-turut adalah utas level sistem operasi: penjadwalan pada sistem single-core, multi-core, dan NUMA. Di mana-mana aturannya berbeda dan ini harus diperhitungkan dalam pekerjaan Anda;
- Analisis kerja sinkronisasi primitif pada tingkat waktu kuantum. Anda semua belajar berbicara tentang kunci / Mutex / Semaphore dalam wawancara. Tidak ada gunanya mengulangi, dan karena itu kami akan mempersenjatai diri dengan jadwal dan melihat bagaimana kuanta didistribusikan antara prosesor pada semua primitif sinkronisasi: Kernel-Space, User-Space, dan yang hybrid.
- Eksklusif bengkel sejati: struktur
Monitor
primitif. Fakta bahwa lock(){}
terungkap dalam try { } finally { }
Anda sudah tahu tanpa saya, tetapi apa yang Monitor.Enter
, Monitor.Leave
, Monitor.TryEnter
adalah topik untuk neraka laporan yang terpisah, padat, lengkap. Percayalah, semua yang ada di dalam dirinya sangat, sangat keren. Ini adalah primitif sinkronisasi hibrid yang dibangun untuk menghindari kelaparan, kunci yang berlebihan dan konvoi kunci lolos. - Sebanyak tiga laporan solid tentang bebas-penguncian dan bebas-tunggu, termasuk contoh pesawat pengintai dan pertahanan udara, mencoba menembak jatuh pesawat tak berawak ini. Dan laporan-laporan ini sangat disukai oleh HighLoad ++ sehingga mereka dipanggil ke HighLoad ++ di Moskow pada 07-08 November .
- Serangkaian laporan tentang PLINQ dan Async-Await. Semuanya juga sedetail mungkin. Bukan oleh jam: hal ini sudah cukup di Internet. Setiap teknologi akan diberi tahu "dari dalam": seperti kebiasaan di CLRium.
- Dan seminar akan ditutup oleh dua laporan tentang perpustakaan koleksi bebas kunci dari Microsoft dan Intrinsics (instruksi vektor untuk paralelisasi di tingkat prosesor).
Beberapa statistik
Kami adalah seminar terbesar di negara ini dan secara umum kami bukan konferensi hanya karena kami menyukai format kami. Anda tidak memilih di antara laporan yang tidak akan Anda tuju. Anda pergi untuk semuanya. Pada saat yang sama, Anda mengerti sebelumnya bahwa semua topik seminar menarik bagi Anda, karena temanya adalah satu. Rekor lain akan ditetapkan pada CLRium 6: 700 orang akan hadir di kedua kota. Sekitar 700 orang memompa keterampilan mereka dalam paralelisasi dan bekerja dengan kompetisi. Dan mereka akan pergi untuk wawancara. Datang dan kamu ke kami :).