Model I/O tak segerak dalam C++
Model I/O tak segerak membolehkan operasi I/O dilakukan secara serentak tanpa menyekat benang utama. Ini penting untuk aplikasi berprestasi tinggi, kerana pengiraan dan aktiviti lain boleh berlaku serentak.
Terdapat dua jenis utama model I/O tak segerak dalam C++:
1 I/O dipacu peristiwa (Port Penyiapan I/O)
Kod contoh:
// 创建 I/O 完成端口 HANDLE ioPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); // 为每个套接字创建通知句柄 SOCKET sock = ...; CreateIoCompletionPort((HANDLE)sock, ioPort, 0, 0); // 在单独的线程中处理通知 DWORD bytesTransferred; LPOVERLAPPED overlapped; while (GetQueuedCompletionStatus(ioPort, &bytesTransferred, &overlapped, NULL, INFINITE)) { // 处理完成的 I/O 操作 }
2. Fail tak segerak I/O
ReadFileEx()
和 WriteFileEx()
. Tidak seperti model dipacu peristiwa, ia tidak menggunakan pemegang pemberitahuan, tetapi kembali terus apabila selesai. Sampel kod:
HANDLE fileHandle = ...; DWORD bytesTransferred; OVERLAPPED overlapped; ReadFileEx(fileHandle, buffer, sizeof(buffer), &overlapped, NULL); while (GetOverlappedResult(fileHandle, &overlapped, &bytesTransferred, FALSE)) { // 处理已完成的 I/O 操作 }
Pilih model yang betul
Memilih model I/O tak segerak terbaik bergantung pada keperluan khusus aplikasi:
Atas ialah kandungan terperinci Apakah model I/O tak segerak dalam C++? Apakah kelebihan dan kekurangan mereka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!