2010-10-25 42 views

Trả lời

10

Visual C++ 2010 không cung cấp thư viện hỗ trợ chủ đề C++ 11 hoặc thư viện nguyên tử.

Nếu bạn muốn sử dụng mã đó trong Visual C++ 2010, bạn sẽ cần sử dụng triển khai bên thứ ba của các thư viện đó. Một tùy chọn là just::thread; nó không miễn phí, nhưng tôi có một bản sao và khá hài lòng với nó.

Hoặc, bạn có thể sử dụng thư viện chủ đề đa nền tảng khác như Boost.Thread hoặc OpenThreads hoặc một trong các thư viện chủ đề Windows gốc. Bất kỳ tùy chọn nào trong số này cũng có thể yêu cầu thay đổi mã để chạy.

Lưu ý rằng Visual C++ 11 sẽ hỗ trợ các thư viện này và chúng được đưa vào Visual C++ 11 Beta.

+0

Và loại tương đương miễn phí là Boost.Thread và Boost.Atomic (không chính thức). – GManNickG

+0

@GMan: Đúng; một điều quan trọng mà Boost.Thread là (theo sự hiểu biết tốt nhất của tôi) thiếu là tương đương với 'std :: async', đó là điều lớn nhất kể từ khi tạo ra destructor. –

+0

Vâng, nó có tương lai mặc dù, vì vậy nó không phải là quá xa tầm tay. – GManNickG

1

VC++ hỗ trợ cú pháp nhúng đặc biệt OpenMP (http://msdn.microsoft.com/en-us/library/tt15eb9t(VS.80).aspx) - lưu ý rằng g ++ cũng hỗ trợ nó, vì vậy bạn có thể nhận được mã nền tảng chéo.

+1

câu hỏi liên quan đến OpenMP như thế nào? – CharlesB

+1

@CharlesB - OpenMP nhúng vào cấp độ ngôn ngữ tất cả các nguyên thủy dự kiến ​​bởi đa luồng và cách để thực hiện song song: nguyên tử, rào cản, quan trọng và song song cuối cùng. Có gì sai với câu trả lời? Nó liên quan đến VS ++, nó trả lời cách cung cấp đa luồng mà không có thư viện của bên thứ ba. – Dewfy

+1

cũng mã được đăng trong câu hỏi có liên quan đến thư viện chủ đề của C++ 0x, mà OpenMP không thực hiện, do đó nhận xét của tôi. – CharlesB

Các vấn đề liên quan