Có ai biết không? Và một câu hỏi lớn hơn là điều gì sẽ xảy ra khi bạn gặp phải mức tối đa này? Đây có phải là số giống với các hệ điều hành Windows khác như Vista, XP, v.v. không?Số lượng chủ đề tối đa trong Windows Server 2003 là bao nhiêu?
Trả lời
Trước tiên tôi xin khuyên đọc bài viết này: http://blogs.msdn.com/oldnewthing/archive/2007/03/01/1775759.aspx
sau đó http://blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspx
Để tóm tắt, giới hạn là bình thường ngăn xếp không gian (mà phải nằm trong khối tiếp giáp) và vì mỗi chủ đề tiêu thụ rải rác này về bạn nhanh chóng chạy ra khỏi các khối liền kề. Trên các máy và hệ điều hành 64 bit, vấn đề này ít hơn nhiều.
chiến lược giảm nhẹ tồn tại nhưng sẽ chỉ đi xa (và dựa vào bạn không sử dụng nhiều ngăn xếp cho mỗi thread)
Là một hướng dẫn sơ bộ:
- tạo hàng chục là gần như chắc chắn để làm việc
- hàng trăm có thể xảy ra trên máy chủ hiện tại và phần cứng máy tính để bàn nhưng rủi ro
- hàng nghìn người gần như chắc chắn sẽ không thành công.
Bạn có thể không cần phải tạo ra hơn mười anyway (và nếu bạn thực sự làm cần bạn nên biết những thông tin này đã được)
Tôi đoán nó không phải là số lượng chủ đề, nhưng việc sử dụng bộ nhớ là yếu tố hạn chế.
Theo như tôi hiểu được mô hình toàn bộ luồng nó nên không thay đổi nhiều kể từ Win2K.
Không có giới hạn chủ đề thực sự nào, nhưng giới hạn của quy trình ngăn xếp không gian. Xem in-depth explanation of threading limits từ Raymond Chen để biết thêm chi tiết về điều này.
Bingo! "Nhưng câu hỏi thực sự được nêu ra bất cứ khi nào ai đó hỏi," Số lượng chủ đề tối đa mà một quy trình có thể tạo ra là gì? "Là" Tại sao bạn tạo ra quá nhiều luồng mà thậm chí trở thành vấn đề? "" – TheSoftwareJedi
Câu trả lời tốt nhất mà tôi đã từng nghe khi đặt câu hỏi như vậy là:
Nó không quan trọng, và nếu bạn thấy rằng nó không thành vấn đề, bạn cần phải suy nghĩ lại những gì bạn đang làm để nó không quan trọng.
Bravo, chủ đề trở nên tự đánh bại (và không hiệu quả) khi có hàng trăm các buggers nhỏ trôi nổi xung quanh. Sử dụng một hồ bơi thread và bạn sẽ không phải lo lắng. – paxdiablo
+1 cho nhận xét. Làm cho ngày của tôi. Và khi nói đến luồng, nó chắc chắn đúng. –
Tôi sẽ chạy Windows trên Knights Landing. Vì vậy, nó bây giờ làm rất nhiều vấn đề với 256-288 chủ đề – user1649948
Lưu ý rằng bạn nên kiểm tra kỹ thiết kế của mình nếu bạn lo ngại về việc đạt đến giới hạn này !!!!!!!!
Câu trả lời cho "Câu hỏi quan trọng hơn" của bạn về những gì xảy ra là OutOfMemoryException.
Không chính xác câu trả lời trực tiếp, nhưng dưới đây là một số mã để tìm hiểu giới hạn. Nó có thể có sẵn bộ nhớ phụ thuộc mặc dù. Sẽ quan tâm đến việc xem các kết quả hệ điều hành/CPU/mem khác.
cảm thấy tự do để chỉnh sửa và thêm máy tính của bạn trong:
Windows 7, VS2008, lõi kép, 2GB mem: 1.465 sau đó sụp đổ với OutOfMemoryException
int i = 0; try { while (true) { new Thread(new ThreadStart(() => Thread.Sleep(int.MaxValue))).Start(); i++; } } catch (Exception ex) { Console.WriteLine(i); Console.WriteLine(ex.ToString()); }
+1 trên "nếu bạn có yêu cầu sau đó bạn đang làm một cái gì đó sai" tình cảm! –
Tại sao cộng đồng bạn lại sử dụng wiki này? Đó là một câu trả lời hay (tôi đã +1 bạn); bạn sẽ nhận được tín dụng cho nó. –
Wiki cộng đồng vì tôi không quan tâm đến nội dung đại diện và giúp người khác thêm kết quả của họ dễ dàng hơn. – TheSoftwareJedi
Đỗ đọc Bài đăng trên blog Raymond Chen mà ShuggyCoUk's answer chỉ vào.
Nhưng đặc biệt chú ý chút này: "số lượng tối đa đề rằng một quá trình có thể tạo ra là gì"
Nhưng câu hỏi thực sự mà được nâng lên bất cứ khi nào ai đó hỏi, là "Tại sao bạn tạo ra quá nhiều chủ đề mà điều này thậm chí còn trở thành một vấn đề?"
Mô hình "một chủ đề trên mỗi khách hàng" nổi tiếng là không vượt quá một chục khách hàng. Nếu bạn định xử lý nhiều hơn nhiều khách hàng cùng một lúc, bạn nên chuyển sang một mô hình thay vì dành một luồng cho một máy khách, thay vào đó bạn phân bổ một đối tượng. (Một ngày nào đó tôi sẽ muse về tính nhị nguyên giữa các chủ đề và các đối tượng.) Windows cung cấp các cổng hoàn thành I/O và một nhóm luồng để giúp bạn chuyển đổi từ mô hình dựa trên luồng sang mô hình dựa trên công việc.
Nếu bạn đang mắc kẹt với một thiết kế hiện có sử dụng một số lượng lớn các chủ đề và nhu cầu mở rộng quy mô, bạn cũng có thể xem xét sợi:
http://msdn.microsoft.com/en-us/library/ms682661%28v=vs.85%29.aspx
Nó có thể giúp bạn tiết kiệm một thiết kế lại hoàn toàn.
Indy coi nó là Indy 10, nhưng nó không bao giờ xảy ra vì cuộc phiêu lưu .NET tiêu thụ phần lớn thời gian.
Liên kết thứ hai của ShuggyCoUk với OldNewThing nói về các sợi sau đây: * Lưu ý rằng các sợi không giúp ích nhiều ở đây, bởi vì một sợi có một chồng, và đó là không gian địa chỉ theo yêu cầu của ngăn xếp đó là yếu tố hạn chế gần như mọi lúc. * – foraidt
Liên kết của ShuggyCoUk có nghĩa là nó không phải là giải pháp tối thượng. Tôi nhìn thấy nó nhiều hơn như là một quy mô thêm độ lớn, nơi chủ đề đầy đủ sẽ không đi. Nhưng như đã nói rằng kiến thức là từ các cuộc thảo luận ngày trong một thời gian mà 64-bit có nghĩa là alpha. –
Câu hỏi có vẻ rất cũ nhưng muốn thêm như có thể hữu ích cho những người khác cũng như:
Bài viết này liên quan đến: Đẩy các giới hạn của Windows: Processes và Chủ đề
http://blogs.technet.com/b/markrussinovich/archive/2009/07/08/3261309.aspx
Mặc định ngăn xếp kích thước là 1MB và không gian địa chỉ chế độ người dùng được gán cho quy trình cửa sổ trong hệ điều hành Windows 32 bit là khoảng 2 GB. cho phép khoảng 2000 luồng cho mỗi quy trình (2000 * 1MB = 2GB). cho 64 bit, thực tế, không có vấn đề như vậy.
- 1. Số lượng kết nối tối đa được phép trong SQL Server 2008 là bao nhiêu?
- 2. Số lượng chủ đề tối đa trong ứng dụng .NET?
- 3. Thông lượng tối đa của Loggly là bao nhiêu?
- 4. Số lượng tối đa các không gian chính trong Cassandra là bao nhiêu?
- 5. Số lượng khối tối đa có thể có trong CUDA là bao nhiêu?
- 6. Số lượng regex được đánh số tối đa là bao nhiêu?
- 7. Số tệp tối đa trên mỗi bình là bao nhiêu?
- 8. Số lượng kết nối cURL tối đa được đặt bởi là bao nhiêu?
- 9. Số lượng khối lượng đính kèm tối đa cho mỗi phiên bản Amazon EC2 là bao nhiêu?
- 10. Số lượng bảng tối đa trong MySQL
- 11. Trong tỷ giá hối đoái, số lượng chữ số thập phân được sử dụng tối đa là bao nhiêu?
- 12. Độ dài tối đa của tên facebook là bao nhiêu?
- 13. Kích thước tối đa của Web.config là bao nhiêu?
- 14. Độ dài tối đa của một ListProperty là bao nhiêu?
- 15. Số lượng chuyển hướng HTTP tối đa được tất cả các trình duyệt chính cho phép là bao nhiêu?
- 16. Có bao nhiêu ký tự trong varchar (tối đa)
- 17. Số lượng dự án tối ưu trong giải pháp Visual Studio 2008 là bao nhiêu?
- 18. Số byte tối đa cho ký tự mã hóa UTF-8 là bao nhiêu?
- 19. Số thứ nguyên tối đa được phép cho một mảng trong C++ là bao nhiêu?
- 20. Số cột tối đa được phép trong một bảng là bao nhiêu?
- 21. Số ký tự tối đa trong thông báo USSD là bao nhiêu?
- 22. Số lượng kết nối đồng thời tối đa mà trình duyệt sẽ thực hiện là bao nhiêu?
- 23. Số hàng tối đa mà một bảng SQL Server duy nhất có thể lưu trữ là bao nhiêu?
- 24. Số chủ đề cao nhất hợp lý để chạy đồng thời trong Jmeter là bao nhiêu?
- 25. Số lượng đối tượng tối đa trong NSArray
- 26. Số lượng tối đa các chủ đề có sẵn trong Asp.net ThreadPool
- 27. Cách cấu hình số lượng chủ đề tối đa trong Parallel.For
- 28. Số lượng cột tối đa được phép trong chế độ xem SQL Server 2008 là gì?
- 29. Chức năng PHP - Số lượng đối số tối đa
- 30. Giới hạn tối ưu cho độ dài URL là bao nhiêu? 100, 200+
Tạo chúng sớm và gộp chúng lại để sử dụng sau này khi bộ nhớ không bị phân mảnh cũng sẽ hữu ích. –