Pelaksanaan Corak Pengumpulan Objek C#
Pengenalan
Pengumpulan objek ialah teknik yang digunakan untuk mengoptimumkan prestasi dengan menggunakan semula objek yang mahal atau sering diperuntukkan dan bukannya mencipta dan memusnahkannya dengan kerap. Dalam pelaksanaan C# ini, kami meneroka cara mencipta kumpulan objek yang teguh dan selamat untuk benang dengan tetapan boleh disesuaikan.
Pelaksanaan
Strategi Pemuatan Sumber
Kolam objek menyokong pemuatan yang bersemangat (membuat semua objek di hadapan) dan pemuatan malas (mencipta objek hanya apabila diperlukan). Penghitungan LoadingMode mentakrifkan pilihan ini.
Strategi Akses
Corak akses menentukan cara objek dipilih daripada kolam. Pelaksanaan termasuk tiga pilihan:
Pilihan ini ditentukan melalui penghitungan AccessMode.
Kelas Struktur
Kolam
Untuk pemuatan malas, dua mod disediakan:
Penggunaan
Untuk menggunakan kolam objek, cipta Pool
Pooled Object Proxy
Untuk memudahkan penggunaan dan mengelakkan akses terus ke kelas Pool, kelas PooledFoo diperkenalkan . Ia memproksi antara muka IFoo dan secara automatik melepaskan objek Foo yang mendasari ke kolam apabila dilupuskan.
Pembacaan Berbilang dan Pengasingan
Kelas Semaphore digunakan untuk memastikan akses selamat benang ke stor item dalam, menghalang berbilang benang daripada memperoleh atau melepaskan objek yang sama serentak.
Ciri Tambahan
Kolam boleh pramuat dengan bilangan objek tertentu semasa pemula. Ia juga menyediakan harta IsDisposed untuk menentukan sama ada kolam tidak lagi aktif, dalam hal ini ia membersihkan semua objek terkumpul yang tinggal.
Contoh Penggunaan
// Create the object pool Pool<IFoo> pool = new Pool<IFoo>( PoolSize, p => new PooledFoo(p), LoadingMode.Lazy, AccessMode.Circular ); // Acquire an object from the pool using (IFoo foo = pool.Acquire()) { // Use the object }
Kesimpulan
Pelaksanaan ini menyediakan corak pengumpulan objek yang fleksibel dan selamat benang yang boleh disesuaikan untuk memenuhi pelbagai keperluan aplikasi. Dengan menggunakan semula objek, anda boleh meningkatkan prestasi dan mengurangkan penggunaan sumber, terutamanya untuk objek yang sering diperuntukkan atau mahal.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Corak Pengumpulan Objek yang Selamat Benang dan Boleh Disesuaikan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!