COM+ Model Threading

Model utas COM+ dirancang di sekitar koleksi objek yang disebut apartemen. Apartemen adalah kumpulan konteks yang terkandung dalam proses, seperti yang ditunjukkan dalam ilustrasi berikut.

Diagram that shows a collection of contexts in an activity, within an apartment, within a process.

Panggilan dalam apartemen bersifat langsung, sementara panggilan di seluruh apartemen (di luar proses) tidak langsung dan memerlukan kode proksi dan stub. Apartemen memungkinkan objek dengan properti sinkronisasi dan reentransi yang berbeda dan memiliki dua kategori: single-threaded dan multithreaded. Objek di apartemen berulir tunggal (STA) dijalankan pada utas tertentu tempat mereka dibuat. STAs hanya mengizinkan satu metode untuk dijalankan pada satu waktu. Mereka dirancang untuk antarmuka pengguna dan mengandalkan antrean pesan Microsoft Windows untuk memproses panggilan masuk.

Objek di apartemen multithreaded (MTA) dijalankan pada utas apa pun dan memungkinkan sejumlah metode terjadi secara bersamaan. MTAs mendukung reentrance secara implisit.

Kelas COM+ ditandai dengan properti ThreadingModel yang memungkinkan COM+ untuk membuat objek di apartemen yang tepat. Untuk menentukan apartemen tempat objek dibuat, CoCreateInstance menggunakan properti ThreadingModel.

Utas harus memanggil CoInitializeEx sebelum dapat menggunakan COM+. Ini menciptakan mereka di dalam apartemen dan konteks yang benar. Apartemen utas utama bertekad menjadi STA pertama yang disebut oleh CoInitializeEx. Ini biasanya dikaitkan dengan utas utama proses. CoInitializeEx menunjukkan jenis apartemen yang diperlukan oleh utas dengan mengatur bendera berikut:

  • COINIT_MULTITHREADED—Menemukan utas di satu apartemen multithread.
  • COINIT_APARTMENTTHREADED—Tempatkan utas ke STA baru.

Topik berikut di bagian ini memberikan informasi selengkapnya tentang menggunakan model utas dan apartemen di COM+:

Proses, Utas, dan Apartemen

ThreadingModel