


Cara menggunakan model pengaturcaraan tak segerak dan pengaturcaraan serentak untuk mengendalikan pengagihan tugas dan penyelesaian dalam C#
Cara menggunakan model pengaturcaraan tak segerak dan pengaturcaraan serentak untuk mengendalikan pengagihan tugas dan penyelesaian dalam C#
Pengenalan:
Dalam perisian moden Semasa pembangunan, kita sering menghadapi situasi memproses sejumlah besar tugas, dan tugas-tugas ini mungkin bebas dan tidak mengganggu antara satu sama lain. Untuk meningkatkan prestasi dan kecekapan program, kami berharap dapat memproses tugasan ini secara serentak dan mendapatkan hasil yang sepadan apabila setiap tugasan selesai. Sebagai bahasa pengaturcaraan berorientasikan objek, C# menyediakan model pengaturcaraan tak segerak dan penyelesaian pengaturcaraan serentak Dengan menggunakan ciri ini dengan sewajarnya, pengagihan tugas dan penyelesaian masalah boleh dikendalikan dengan berkesan.
1. Model pengaturcaraan tak segerak
Model pengaturcaraan tak segerak bermaksud bahawa apabila melaksanakan tugas tertentu, utas utama tidak akan disekat, tetapi tugas itu akan diwakilkan secara tidak segerak kepada utas atau kumpulan benang lain . pemprosesan, utas utama boleh terus melakukan operasi lain. Dalam C#, model pengaturcaraan tak segerak boleh dilaksanakan dengan menggunakan kata kunci tak segerak dan menunggu. Berikut ialah contoh menggunakan model pengaturcaraan tak segerak:
static async Task<int> DoSomeWorkAsync() { // 模拟一个耗时操作 await Task.Delay(1000); return 42; } static async void Main(string[] args) { Console.WriteLine("开始执行任务"); int result = await DoSomeWorkAsync(); Console.WriteLine("任务结果:" + result); Console.WriteLine("任务执行完毕"); // 等待用户输入,防止控制台窗口关闭 Console.ReadLine(); }
Dalam kod di atas, kaedah DoSomeWorkAsync() ialah kaedah tak segerak dan kata kunci await memberitahu pengkompil untuk tidak melaksanakan Tugasan. Kelewatan () kaedah akan menyekat benang utama. Kaedah Main() juga ditandakan sebagai kaedah tak segerak dan menggunakan kata kunci await untuk menunggu keputusan kaedah DoSomeWorkAsync(). Melalui model pengaturcaraan tak segerak, kami boleh terus melakukan operasi lain sementara menunggu tugasan selesai, meningkatkan kelajuan tindak balas program.
2. Pengaturcaraan serentak
Apabila memproses sejumlah besar tugas, pengaturcaraan serentak boleh memanfaatkan sepenuhnya kelebihan pemproses berbilang teras dan meningkatkan kelajuan pemprosesan tugas. Dalam C#, anda boleh menggunakan benang, kumpulan benang, perpustakaan selari tugas, dll. untuk melaksanakan pengaturcaraan serentak.
- Thread
Menggunakan benang untuk pengaturcaraan serentak ialah kaedah yang paling asas. Dengan mencipta berbilang utas dan memberikan tugasan kepada utas ini untuk pelaksanaan serentak, kecekapan pemprosesan boleh dipertingkatkan. Berikut ialah contoh penggunaan benang:
static void DoSomeWork() { Console.WriteLine("线程开始执行任务"); // 模拟耗时操作 Thread.Sleep(1000); Console.WriteLine("线程任务执行完毕"); } static void Main(string[] args) { Console.WriteLine("开始执行任务"); // 创建线程 Thread thread = new Thread(DoSomeWork); // 启动线程 thread.Start(); Console.WriteLine("任务执行中"); // 等待线程执行完毕 thread.Join(); Console.WriteLine("任务执行完毕"); // 等待用户输入,防止控制台窗口关闭 Console.ReadLine(); }
Dalam kod di atas, kami melaksanakan tugas dengan mencipta urutan baharu dan memulakannya. Melalui kaedah Join() thread, kami boleh memastikan bahawa kami menunggu thread selesai sebelum meneruskan pelaksanaan thread utama.
- Kolam Benang
Menggunakan kumpulan benang ialah kaedah yang lebih cekap dan terurus secara automatik. Kumpulan benang mencipta satu set benang apabila aplikasi dimulakan dan menggunakan semula urutan ini untuk melaksanakan tugas. Berikut ialah contoh penggunaan kumpulan benang:
static void DoSomeWork() { Console.WriteLine("线程开始执行任务"); // 模拟耗时操作 Thread.Sleep(1000); Console.WriteLine("线程任务执行完毕"); } static void Main(string[] args) { Console.WriteLine("开始执行任务"); // 使用线程池执行任务 ThreadPool.QueueUserWorkItem(_ => DoSomeWork()); Console.WriteLine("任务执行中"); // 等待用户输入,防止控制台窗口关闭 Console.ReadLine(); }
Dalam kod di atas, kami mewakilkan tugas kepada kumpulan benang untuk dilaksanakan melalui kaedah ThreadPool.QueueUserWorkItem(). Kumpulan benang secara automatik akan memperuntukkan benang terbiar untuk melaksanakan tugas, menghapuskan keperluan untuk membuat dan memulakan benang secara manual.
- Task Parallel Library
The Task Parallel Library (TPL) ialah model pengaturcaraan serentak lanjutan yang diperkenalkan dalam .NET Framework 4. Ia menyediakan satu siri kelas dan kaedah untuk memudahkan pengendalian tugas serentak. Berikut ialah contoh penggunaan perpustakaan selari tugas:
static void DoSomeWork() { Console.WriteLine("任务开始执行"); // 模拟耗时操作 Thread.Sleep(1000); Console.WriteLine("任务执行完毕"); } static void Main(string[] args) { Console.WriteLine("开始执行任务"); // 创建任务 Task task = new Task(DoSomeWork); // 启动任务 task.Start(); Console.WriteLine("任务执行中"); // 等待任务执行完毕 task.Wait(); Console.WriteLine("任务执行完毕"); // 等待用户输入,防止控制台窗口关闭 Console.ReadLine(); }
Dalam kod di atas, kami melaksanakan kerja dengan mencipta tugasan (Task). Mulakan tugas dengan memanggil kaedah Mula() dan kemudian gunakan kaedah Tunggu() untuk menunggu tugasan selesai.
3 Pengagihan dan penyelesaian tugas
Dalam aplikasi sebenar, kami mungkin perlu memproses sejumlah besar tugas dan mengagihkan tugas ini kepada berbilang rangkaian atau kumpulan benang untuk pelaksanaan serentak. Berikut ialah contoh kod untuk menunjukkan cara menggunakan model pengaturcaraan tak segerak dan pengaturcaraan serentak untuk mengendalikan pengagihan dan penyelesaian tugas:
static async Task<int> DoSomeWorkAsync() { // 模拟一个耗时操作 await Task.Delay(1000); return 42; } static async Task Main(string[] args) { Console.WriteLine("开始执行任务"); var tasks = new List<Task<int>>(); for (int i = 0; i < 10; i++) { tasks.Add(DoSomeWorkAsync()); } // 等待所有任务完成 await Task.WhenAll(tasks); Console.WriteLine("所有任务执行完毕"); // 输出任务结果 foreach (var task in tasks) { Console.WriteLine("任务结果:" + task.Result); } // 等待用户输入,防止控制台窗口关闭 Console.ReadLine(); }
Dalam kod di atas, kami menggunakan model pengaturcaraan tak segerak untuk mencipta berbilang tugas, dan tambahkan tugasan ini pada senarai tugasan. Tunggu semua tugasan diselesaikan dengan memanggil kaedah Task.WhenAll(), dan kemudian melintasi senarai tugasan untuk mengeluarkan hasil tugasan.
Kesimpulan:
Melalui model pengaturcaraan tak segerak dan pengaturcaraan serentak, kami boleh meningkatkan prestasi dan kecekapan program apabila memproses sejumlah besar tugas. Model pengaturcaraan tak segerak membolehkan kami meneruskan operasi lain sementara menunggu tugasan selesai, manakala pengaturcaraan serentak memanfaatkan sepenuhnya pemproses berbilang teras untuk meningkatkan kelajuan pelaksanaan tugas. Dalam aplikasi praktikal, kita boleh memilih kaedah yang sesuai untuk mengagihkan tugas dan menyelesaikan masalah mengikut situasi tertentu. Kod sampel di atas menyediakan beberapa kaedah dan teknik asas, tetapi aplikasi sebenar mungkin memerlukan kaedah pemprosesan yang lebih terperinci dan kompleks, yang perlu dilaraskan dan dioptimumkan mengikut situasi tertentu.
Rujukan:
- C# Model pengaturcaraan tak segerak: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/ concepts /async/
- C# Pengaturcaraan selari: https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/
Atas ialah kandungan terperinci Cara menggunakan model pengaturcaraan tak segerak dan pengaturcaraan serentak untuk mengendalikan pengagihan tugas dan penyelesaian dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Bagaimana cara menggunakan aplikasi C# .net ke Azure atau AWS? Jawapannya ialah menggunakan Azureappservice dan AwselasticBeansTalk. 1. Pada Azure, mengautomasikan penggunaan menggunakan Azureappservice dan Azurepipelines. 2. Pada AWS, gunakan Amazon ElasticBeansTalk dan AWSLambda untuk melaksanakan penempatan dan pengiraan tanpa pelayan.

Gabungan C# dan .NET menyediakan pemaju dengan persekitaran pengaturcaraan yang kuat. 1) C# menyokong polimorfisme dan pengaturcaraan asynchronous, 2) .NET menyediakan keupayaan silang platform dan mekanisme pemprosesan serentak, yang menjadikannya digunakan secara meluas dalam pembangunan aplikasi desktop, web dan mudah alih.

.NetFramework adalah kerangka perisian, dan C# adalah bahasa pengaturcaraan. 1..NetFramework menyediakan perpustakaan dan perkhidmatan, sokongan desktop, web dan aplikasi mudah alih. 2.C# direka untuk .NetFramework dan menyokong fungsi pengaturcaraan moden. 3..NetFramework Menguruskan pelaksanaan kod melalui CLR, dan kod C# disusun ke IL dan dikendalikan oleh CLR. 4. Gunakan .NetFramework untuk membangunkan aplikasi dengan cepat, dan C# menyediakan fungsi lanjutan seperti LINQ. 5. Kesilapan umum termasuk penukaran jenis dan kebuntuan pengaturcaraan tak segerak. Alat VisualStudio diperlukan untuk debugging.

C# adalah bahasa pengaturcaraan yang berorientasikan objek yang dibangunkan oleh Microsoft, dan .NET adalah rangka kerja pembangunan yang disediakan oleh Microsoft. C# menggabungkan prestasi C dan kesederhanaan Java, dan sesuai untuk membina pelbagai aplikasi. Rangka kerja .NET menyokong pelbagai bahasa, menyediakan mekanisme pengumpulan sampah, dan memudahkan pengurusan memori.

C# dan .NET Runtime bekerjasama rapat untuk memperkasakan pemaju untuk keupayaan pembangunan yang cekap, kuat dan silang platform. 1) C# adalah bahasa pengaturcaraan yang berorientasikan objek dan berorientasikan objek yang direka untuk mengintegrasikan dengan lancar dengan rangka .NET. 2) Runtime NET menguruskan pelaksanaan kod C#, menyediakan pengumpulan sampah, keselamatan jenis dan perkhidmatan lain, dan memastikan operasi yang cekap dan silang platform.

Untuk memulakan C# .NET Development, anda perlu: 1. Memahami pengetahuan asas C# dan konsep teras Rangka Kerja NET; 2. Menguasai konsep asas pembolehubah, jenis data, struktur kawalan, fungsi dan kelas; 3. Belajar ciri -ciri canggih C#, seperti LINQ dan pengaturcaraan asynchronous; 4. Berkenaan dengan teknik debugging dan kaedah pengoptimuman prestasi untuk kesilapan biasa. Dengan langkah -langkah ini, anda secara beransur -ansur boleh menembusi dunia C#.net dan menulis aplikasi yang cekap.

Hubungan antara C# dan .NET tidak dapat dipisahkan, tetapi mereka bukan perkara yang sama. C# adalah bahasa pengaturcaraan, sementara .NET adalah platform pembangunan. C# digunakan untuk menulis kod, menyusun bahasa pertengahan .NET (IL), dan dilaksanakan oleh Runtime .NET (CLR).

C#.NET masih penting kerana ia menyediakan alat dan perpustakaan yang kuat yang menyokong pelbagai pembangunan aplikasi. 1) C# menggabungkan rangka kerja NET untuk menjadikan pembangunan cekap dan mudah. 2) Mekanisme keselamatan dan sampah jenis C#meningkatkan kelebihannya. 3) .NET menyediakan persekitaran berjalan lintas platform dan API yang kaya, meningkatkan fleksibiliti pembangunan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Dreamweaver Mac版
Alat pembangunan web visual

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini