Tại một số điểm tôi nhớ đọc rằng các chủ đề không thể được tạo một cách an toàn cho đến dòng đầu tiên của hàm main(), vì các trình biên dịch chèn mã đặc biệt để thực hiện công việc luồng chạy trong thời gian khởi tạo tĩnh. Vì vậy, nếu bạn có một đối tượng toàn cầu tạo ra một chuỗi đang được xây dựng, chương trình của bạn có thể bị lỗi. Nhưng bây giờ tôi không thể tìm thấy bài viết gốc, và tôi tò mò về sự hạn chế mạnh mẽ như thế nào - nó có đúng theo tiêu chuẩn không? Có đúng trên hầu hết các trình biên dịch không? Nó sẽ vẫn đúng trong C++ 0x? Có thể cho trình biên dịch phù hợp tiêu chuẩn để tự tạo khởi chạy tĩnh chính nó đa luồng không? (ví dụ: phát hiện hai đối tượng toàn cầu không chạm vào nhau, và khởi tạo chúng trên các luồng riêng biệt để đẩy nhanh quá trình khởi động chương trình)Chủ đề có thể được tạo một cách an toàn trong khi khởi tạo tĩnh không?
Chỉnh sửa: Để làm rõ, tôi đang cố gắng cảm nhận việc triển khai thực sự có khác biệt đáng kể không về khía cạnh này, hoặc nếu nó là một cái gì đó tiêu chuẩn giả. Ví dụ, về mặt kỹ thuật, tiêu chuẩn cho phép xáo trộn bố cục của các thành viên thuộc về các bộ định danh truy cập khác nhau (public/protected/etc.). Nhưng không có trình biên dịch tôi biết thực sự làm điều này.
"là nó đúng theo tiêu chuẩn" - tiêu chuẩn C++ 03 không có gì để nói về chủ đề của chủ đề. Các vị trí cần quan tâm đến hành vi hiện tại sẽ là POSIX (tất nhiên là tiêu chuẩn * a *, không phải chuẩn *), MSDN, Boost hoặc các tài liệu cụ thể khác cho trình biên dịch, nền tảng và luồng API sử dụng. –