Khi các máy tính đa xử lý và đa lõi ngày càng trở nên phổ biến hơn, đơn giản là tắt một luồng mới một cách đơn giản và không đau để đơn giản hóa mã? Ví dụ, trong một dự án cá nhân hiện tại, tôi có một máy chủ mạng đang lắng nghe trên một cổng. Vì đây chỉ là một dự án cá nhân, nó chỉ là một ứng dụng máy tính để bàn, với một GUI tích hợp vào nó để cấu hình. Vì vậy, các ứng dụng đọc một cái gì đó như thế này:Việc kích hoạt một Chủ đề có phải là câu trả lời hợp lệ để đơn giản hóa mã không?
Main() Read configuration Start listener thread Run GUI Listener Thread While the app is running Wait for a new connection Run a client thread for the new connection Client Thread Write synchronously Read synchronously ad inifinitum, or till they disconnect
Cách tiếp cận này có nghĩa rằng trong khi tôi phải lo lắng về rất nhiều khóa, với các vấn đề tiềm năng có liên quan đến, tôi tránh rất nhiều mã spaghetti từ các cuộc gọi assynchronous vv
Một phiên bản hơi xảo quyệt của điều này đã xuất hiện hôm nay khi tôi đang làm việc trên mã khởi động. Việc khởi động nhanh chóng, nhưng nó sử dụng tải chậm cho rất nhiều cấu hình, điều đó có nghĩa là khi khởi động nhanh, thực sự kết nối và sử dụng dịch vụ rất khó khăn do độ trễ trong khi tải các phần khác nhau (điều này thực sự có thể đo lường được trong thực tế thời gian, lên đến 3-10 giây đôi khi). Vì vậy, tôi đã chuyển sang một chiến lược khác, khi khởi động, lặp lại tất cả mọi thứ và buộc tải chậm để khởi động ... nhưng điều này khiến nó bắt đầu chậm chạp; thức dậy, đi uống cà phê chậm. Giải pháp cuối cùng: ném vòng lặp vào một chuỗi riêng biệt với phản hồi trong khay hệ thống trong khi nó vẫn đang tải.
Đây có phải là "Meh, ném nó vào một chủ đề khác, nó sẽ ổn" thái độ ok? Tại thời điểm nào bạn bắt đầu nhận được lợi nhuận giảm và/hoặc thậm chí giảm hiệu suất?
Câu hỏi hay và bổ sung tốt cho cơ sở kiến thức SO. – Alan
Tôi đồng ý, câu hỏi thực sự tốt. –