http://vietjack.com/cplusplus/index.jsp Copyright © vietjack.com Đa luồng (Multithread) C++ Đa luồng (Multithreading) form chuyên dụng đa nhiệm (multitasking) đa nhiệm tính cho phép máy tính bạn chạy hai nhiều chương trình đồng thời Nói chung, có hai kiểu đa nhiệm là: process-based thread-based tương ứng: dựa tiến trình dựa luồng Đa nhiệm dựa tiến trình xử lý việc thực thi đồng thời chương trình Đa nhiệm dựa luồng xử lý việc thực thi đồng thời phần chương trình Một chương trình đa luồng chứa hai nhiều phần mà chạy đồng thời Mỗi phần chương trình gọi thread, thread định nghĩa path riêng biệt thực thi C++ khơng chứa hỗ trợ có sẵn cho ứng dụng đa luồng Thay vào đó, dựa hồn tồn vào Hệ điều hành để cung cấp tính Chương giả sử bạn làm việc Hệ điều hành Linux chuẩn bị viết chương trình đa luồng C++ sử dụng POSIX POSIX Threads Pthreads cung cấp API mà có sẵn nhiều hệ thống FreeBSD, NetBSD, GNU/Linux, Mac OS X Solaris Tạo Thread C++ Đây chương trình sử dụng để tạo POSIX thread: #include pthread_create (thread, attr, start_routine, arg) Ở đây, pthread_create tạo thread làm thực thi Chương trình gọi thời điểm đâu code bạn Dưới miêu tả tham số: Tham số Miêu tả thread Một định danh cho thread trả chương trình http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/cplusplus/index.jsp Copyright © vietjack.com attr Một thuộc tính mà sử dụng để thiết lập thuộc tính thread Bạn xác định đối tượng thuộc tính thread, NULL cho giá trị mặc định start_routine Chương trình C++ mà thread thực thi tạo arg Một tham số đơn mà truyền tới start_routine Nó phải truyền tham chiếu dạng trỏ kiểu void NULL sử dụng khơng có tham số truyền Số thread tối đa tạo tiến trình phụ thuộc vào trình triển khai (Implementation) Một tạo, thread ngang hàng, tạo thread khác Khơng có phụ thuộc thread C++ Kết thuốc Thread C++ Chương trình sau sử dụng để kết thúc POSIX thread C++: #include pthread_exit (status) Ở pthread_exit sử dụng để kết thúc thread Chương trình pthread_exit() gọi sau thread hồn thành cơng việc khơng cần thiết phải tồn Nếu main() kết thúc trước thread tạo, kết thúc chương trình pthread_create(), thread khác tiếp tục thực thi Nếu không thì, chúng tự động kết thúc main() hồn thành Ví dụ Ví dụ đơn giản sau tạo thread với chương trình pthread_create() Mỗi thread in thơng báo “Hello World!”, sau kết thúc với lời gọi tới pthread_exit() C++: #include #include #include using namespace std; http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/cplusplus/index.jsp #define NUM_THREADS Copyright © vietjack.com void *PrintHello(void *threadid) { long tid; tid = (long)threadid; cout