tailieunhanh - Bài giảng Lập trình mạng: Chương 3 - Lê Bá Vui

Bài giảng Lập trình mạng: Chương 3 Giới thiệu lập trình đa luồng, cung cấp cho người học những kiến thức như: Khởi tạo và thực thi các luồng trên Windows; Đồng bộ và tránh xung đột trong lập trình đa luồng. Mời các bạn cùng tham khảo! | Chương 3. Giới thiệu lập trình đa luồng Chương 3. Giới thiệu lập trình đa luồng . Khởi tạo và thực thi các luồng trên Windows . Đồng bộ và tránh xung đột trong lập trình đa luồng 114 Khởi tạo và thực thi các luồng Khởi tạo luồng mới HANDLE CreateThread LPSECURITY_ATTRIBUTES ThreadAttributes DWORD StackSize LPTHREAD_START_ROUTINE StartAddress LPVOID Parameter DWORD CreationFlags LPDWORD ThreadId Các tham số cần quan tâm StartAddress tên của hàm thực thi cần được khai báo trước Parameter con trỏ tham số truyền vào hàm thực thi Kết quả trả về FALSE nếu xảy ra lỗi có thể dùng hàm GetLastError để xác định 115 NOT FALSE HANDLE sử dụng để tham chiếu đến luồng Khởi tạo và thực thi các luồng Khởi tạo luồng mới Hàm CreateThread yêu cầu khai báo hàm thực thi có thể khai báo prototype trước khi thực hiện nội dung hàm Hàm thực thi được chạy ngay sau khi luồng được tạo Ví dụ khai báo prototype của hàm thực thi DWORD WINAPI MyThreadStart LPVOID p 116 Khởi tạo và thực thi các luồng Xóa luồng Mục đích giải phóng tài nguyên bộ nhớ sau khi các luồng thực hiện xong. Nếu tạo quá nhiều luồng mà không giải phóng tài nguyên Gây rò rỉ bộ nhớ Không tạo thêm được luồng mới Khi chương trình kết thúc các luồng được tự động giải phóng. BOOL CloseHandle HANDLE hObject 117 Khởi tạo và thực thi các luồng Ví dụ include include DWORD WINAPI helloFunc LPVOID arg printf Hello Thread n return 0 main HANDLE hThread CreateThread NULL 0 helloFunc NULL 0 NULL Kết quả thực hiện chương trình 118 Khởi tạo và thực thi các luồng Ví dụ Một trong hai khả năng xảy ra Dòng chữ Hello Thread được in ra màn hình Dòng chữ không được in ra màn hình gt Do chương trình kết thúc trước khi hàm thực thi chạy gt Cần có cơ chế chờ cho luồng chạy xong 119 Khởi tạo và thực thi các luồng Ví dụ include include BOOL threadDone FALSE DWORD WINAPI helloFunc LPVOID arg printf Hello Thread n threadDone TRUE return 0 main HANDLE hThread CreateThread NULL 0 helloFunc NULL 0 NULL while threadDone Vấn đề với

TỪ KHÓA LIÊN QUAN