Bagikan melalui


Multithreading dengan C++ dan MFC

Pustaka Microsoft Foundation Class (MFC) menyediakan dukungan untuk aplikasi multithreaded. Topik ini menjelaskan proses dan utas dan pendekatan MFC untuk multithreading.

Proses adalah instans aplikasi yang dijalankan. Misalnya, saat Anda mengklik dua kali ikon Notepad, Anda memulai proses yang menjalankan Notepad.

Utas adalah jalur eksekusi dalam proses. Saat Anda memulai Notepad, sistem operasi membuat proses dan mulai menjalankan alur utama proses tersebut. Ketika utas ini berakhir, begitu juga prosesnya. Utas utama ini disediakan ke sistem operasi oleh kode startup dalam bentuk alamat fungsi. Biasanya, itu adalah alamat main fungsi atau WinMain yang disediakan.

Anda dapat membuat utas tambahan di aplikasi Jika mau. Anda mungkin ingin melakukan ini untuk menangani tugas latar belakang atau pemeliharaan ketika Anda tidak ingin pengguna menunggu mereka selesai. Semua utas dalam aplikasi MFC diwakili oleh objek CWinThread . Dalam kebanyakan situasi, Anda bahkan tidak perlu membuat objek ini secara eksplisit; sebagai gantinya, panggil fungsi pembantu kerangka kerja AfxBeginThread, yang membuat CWinThread objek untuk Anda.

MFC membedakan dua jenis utas: utas antarmuka pengguna dan utas pekerja. Utas antarmuka pengguna umumnya digunakan untuk menangani input pengguna dan merespons peristiwa dan pesan yang dihasilkan oleh pengguna. Utas pekerja umumnya digunakan untuk menyelesaikan tugas, seperti perhitungan ulang, yang tidak memerlukan input pengguna. API Win32 tidak membedakan antara jenis utas; itu hanya perlu mengetahui alamat awal utas sehingga dapat mulai menjalankan utas. MFC menangani utas antarmuka pengguna secara khusus dengan menyediakan pompa pesan untuk peristiwa di antarmuka pengguna. CWinApp adalah contoh objek utas antarmuka pengguna, karena berasal dari CWinThread dan menangani peristiwa dan pesan yang dihasilkan oleh pengguna.

Perhatian khusus harus diberikan pada situasi di mana lebih dari satu utas mungkin memerlukan akses ke objek yang sama. Multithreading: Tips Pemrograman menjelaskan teknik yang dapat Anda gunakan untuk mengatasi masalah yang mungkin muncul dalam situasi ini. Multithreading: Cara Menggunakan Kelas Sinkronisasi menjelaskan cara menggunakan kelas yang tersedia untuk menyinkronkan akses dari beberapa utas ke satu objek.

Menulis dan men-debug pemrograman multithread secara inheren merupakan usaha yang rumit dan rumit, karena Anda harus memastikan bahwa objek tidak diakses oleh lebih dari satu utas pada satu waktu. Topik multithreading tidak mengajarkan dasar-dasar pemrograman multithreaded, hanya cara menggunakan MFC dalam program multithreaded Anda. Sampel MFC multithread yang disertakan dalam Visual C++ mengilustrasikan beberapa FungsiOnalitas Penambahan multithreaded dan API Win32 yang tidak dicakup oleh MFC; namun, mereka hanya dimaksudkan untuk menjadi titik awal.

Untuk informasi selengkapnya tentang cara sistem operasi menangani proses dan utas, lihat Proses dan Utas di Windows SDK.

Untuk informasi selengkapnya tentang dukungan multithreading MFC, lihat topik berikut ini:

Lihat juga

Dukungan Multithreading untuk Kode Lama (Visual C++)