Pthread_mutex_lock là gì

Làm quen với Multithreading Trong C++

  • Báo cáo

Bài đăng này đã không được cập nhật trong 5 năm

Dạo này loanh quanh nghe thấy từ multipe thread hơi nhiều. Từ những bài seminar đến trong project hiện tại cũng có nhiều vấn đề liên quan. Về cơ bản mình cũng không phải cao thủ gì, tuỳ nhiên cũng muốn lọ mọ 1 chút gọi là góp vui

. Mình làm về mobile, chủ yếu là 2 mảng Android + IOS. Nên đương nhiên là dù có viết gì, tìm hiểu cái gì thì mục đích chính vẫn là phục vụ cho 2 nền tảng này. Và về cơ bản thì thằng nào cũng có cái gốc gác từ thằng C, vì thế quyết định chiến từ gốc lên cho máu. Đáng lẽ ra thì phải viết về posix threads Bởi nó mới là thằng phục vụ chính cho các platform. Tuy nhiên code C thì có vẻ khó đọc hơn C++, hơn nữa Ubuntu với Mac là đủ để demo, mà về cơ bản thì cơ chế của nó cũng vậy. Khi các bạn đọc hiểu được std:thread thì pThread cũng hoàn toàn có các hàm tương ứng. Kỳ sau sẽ giải thích rõ hơn về vấn đề này.

Multithreading [đa luồng] là gì?

Trước hết chúng ta cùng tìm hiểu xem MultiThread là gì? Về cơ bản Multi Thread là một khả năng của một nền tảng [hệ điều hành, máy ảo vv] hoặc các ứng dụng để tạo ra một quá trình bao gồm nhiều Thread được thực thi. Một Thread thực hiện là chuỗi nhỏ nhất của hướng dẫn lập trình có thể được quản lý một cách độc lập bởi một lscheduler . Những Thread có thể chạy song song và nó có thể làm tăng hiệu quả của chương trình.

Trong các hệ thống đa lõi và đa xử lý thì đa luồng tức là các thread được thực hiện cùng lúc trên lõi hoặc bộ vi xử lý khác nhau.

Đối với hệ thống lõi đơn thì đa luồng chia thời gian giữa các thread. System sẽ gửi 1 số lượng nhất định các hướng dẫn từ mỗi Thread để xử lý. Các Thread không được thực hiện đồng thời. System chỉ mô phỏng thực hiện đồng thời của chúng. Tính năng này của System được gọi là đa luồng.

Multithreading được sử dụng khi thực hiện song song 1 số nhiệm vụ dẫn đến việc tận dụng hiệu quả hơn các tài nguyên của hệ thống.

Trong C++11 được xây dưng header thread.h để tạo ra các multithreaded C++ programs.

How to create a thread?

Đầu tiên dĩ nhiên cần include header thread vào class.

#include

Khi muốn khởi tạo 1 thread, bạn tạo 1 thread object:

thread t_empty;

Như bạn thấy, hàm khởi tạo mặc định của thread class được sử dụng. Chúng ta không chuyền bất cứ 1 thông tin nào vào thread. Tức là không có gì được chạy trong thread này. Chúng ta phải khởi tạo thread. Nó có thể được hoàn thành bằng cách khác. Khi bạn tạo 1 thread, bạn có thể truyền 1 con trỏ hàm vào khởi tạo của nó. 1 thread được khởi tạo, function sẽ bắt đầu chạy, nó chạy trong 1 thread riêng biệt:

#include #include using namespace std; void threadFunc[] { cout

Chủ Đề