close up photo of programming of codes

codecungnhau.com

Một trang web về kỹ thuật lập trình

Danh mục: C++ Design Pattern

  • Sự khác biệt của lvalue và rvalue trong C++

    Sự khác biệt của lvalue và rvalue trong C++

    Nếu trong C, định nghĩa lvalue và rvalue có phần đơn giản, bất cứ cái gì, miễn là bên trái của toán tử gán là lvalue và bên phải của phép gàn là rvalue. Nhưng trong C++, định nghĩa này đã thay đổi và trở nên thú vị hơn. Mỗi biểu thức trong C++ là…

  • C++ Templates: khuôn mẫu lớp

    C++ Templates: khuôn mẫu lớp

    Hàm thành viên của khuôn mẫu lớp Các hàm thành viên có thể được định nghĩa bên trong hoặc bên ngoài một khuôn mẫu lớp. Chúng được định nghĩa giống như các khuôn mẫu hàm nếu được định nghĩa bên ngoài khuôn mẫu lớp. Lưu ý rằng giống như với bất kỳ hàm thành viên…

  • C++ Templates: typename là gì?

    C++ Templates: typename là gì?

    Trong định nghĩa mẫu, ta cần cung cấp một gợi ý cho trình biên dịch biết rằng một định danh không xác định là một kiểu. Trong danh sách các tham số mẫu, typename được sử dụng để chỉ định tham số kiểu. Lưu ý Typename có thể được sử dụng bởi bất kỳ kiểu…

  • C++ Templates: Tìm hiểu về Template

    C++ Templates: Tìm hiểu về Template

    Khuôn mẫu (Template) là cơ sở để lập trình tổng quát trong C++. Là một ngôn ngữ nghiêm ngặt về kiểu, C++ yêu cầu tất cả các biến phải có một kiểu cụ thể, được lập trình viên khai báo rõ ràng hoặc suy ra bởi trình biên dịch. Tuy nhiên, nhiều cấu trúc dữ…

  • 5 Tò mò về sử dụng Lambda trong C++

    5 Tò mò về sử dụng Lambda trong C++

    Bạn có biết làm thế nào để viết một lambda đệ quy? Lưu trữ chúng trong một container? Hay gọi vào lúc biên dịch?. Trong bài viết này, tôi sẽ giới thiệu cho các bạn biết về các sử dụng Lamda trong các ngữ cảnh đó. Đệ quy lambda với std::function Viết một hàm đệ…

  • Tổng quát về lập trình đa luồng trong Modern C++

    Tổng quát về lập trình đa luồng trong Modern C++

    Trong môi trường công nghệ hiện đại, concurrency (đồng thời) đã trở thành một kỹ năng thiết yếu cho tất cả các lập trình viên C++. Khi các chương trình tiếp tục trở nên phức tạp hơn, các máy tính được thiết kế với nhiều lõi CPU hơn. Để thiết kế hiệu quả các chương…

  • C++11 Multithreading – P.10: packaged_task

    C++11 Multithreading – P.10: packaged_task<>

    std::packaged_task<> std :: pack_task <> là một lớp template và đại diện cho task thực thi không đồng bộ. Nó bao gồm: Giả sử chúng ta hiện có một hàm hiện tìm nạp dữ liệu từ DB và trả về, Bây giờ ta muốn thực hiện chức năng này trong một thread riêng biệt. Nhưng…

  • C++11 Multithreading – P.9: std::async

    C++11 Multithreading – P.9: std::async

    Trong bài viết này, ta sẽ thảo luận cách thực thi bất đồng bộ sử dụng std::async trong C++11. std::async() là gì? std::async() là một hàm template chấp nhận một callback (tức hàm hoặc đối tượng hàm) làm đối số và có khả năng thực thi chúng không đồng bộ. std::async trả về một std::future<T>,…

  • C++11 Multithreading – P.8: Giá trị trả về từ Thread, std::future và std::promise

    C++11 Multithreading – P.8: Giá trị trả về từ Thread, std::future và std::promise

    Một đối tượng std::future có thể được dùng với asych, std::packaged_task và std::promise. Trong bài viết này ta sẽ tập trung vào sử dụng std::future với đối tượng std::promise. Rất nhiều lần chúng ta phải đối mặt với tình huống muốn thread trả về một kết quả nào đó. Câu hỏi đặt ra là làm…

  • C++11 Multithreading – P.7: Sử dụng biện điều kiện để xử lý sự kiện

    C++11 Multithreading – P.7: Sử dụng biện điều kiện để xử lý sự kiện

    Biến điều kiện (Condition Variable) là một loại sự kiện được sử dụng để báo hiệu giữa hai hoặc nhiều luồng. Một hoặc nhiều luồng có thể đợi để nhận tín hiệu, trong khi một luồng khác có thể báo hiệu điều này. Header file báo hiệu cho biến điều kiện trong C++11 là: Cần…

  • C++11 Multithreading – P.6: Cần phải xử lý sự kiện

    C++11 Multithreading – P.6: Cần phải xử lý sự kiện

    Trong bài viết, ta sẽ bàn về việc cần phải xử lý sự kiện trong lập trình đa luồng. Đôi khi, sẽ một thread nào đó cần phải đợi sự kiện như là một điều kiện True để có thể thực thi, hoặc là đợi khi một công việc được hoàn thành bởi một thread…

  • C++11 Multithreading – P.5: Cách fix điều kiện cuộc đua

    C++11 Multithreading – P.5: Cách fix điều kiện cuộc đua

    Trong bài viết này, chúng ta sẽ thảo luận về cách sử dụng khóa mutex để bảo vệ dữ liệu được chia sẻ trong môi trường đa luồng và tránh các điều kiện cuộc đua. Để khắc phục điều kiện cuộc đua trong môi trường đa luồng, chúng ta cần mutex. Tức là mỗi luồng…