Bài học nào bạn học được từ một dự án gần như / thực sự thất bại do đa luồng xấu?
Đôi khi, khung áp đặt một mô hình luồng nhất định làm cho mọi thứ trở nên khó khăn hơn để có được quyền.
Đối với tôi, tôi vẫn chưa phục hồi từ thất bại vừa qua và tôi cảm thấy tốt hơn là tôi không nên làm việc với bất cứ điều gì phải làm với đa luồng trong khuôn khổ đó.
Tôi thấy rằng tôi rất giỏi trong các vấn đề đa luồng có ngã ba / nối đơn giản và khi dữ liệu chỉ truyền theo một hướng (trong khi tín hiệu có thể truyền theo hướng vòng tròn).
Tôi không thể xử lý GUI trong đó một số công việc chỉ có thể được thực hiện trên một luồng được tuần tự hóa nghiêm ngặt ("luồng chính") và các công việc khác chỉ có thể được thực hiện trên bất kỳ luồng nào trừ luồng chính ("luồng công nhân") và trong đó dữ liệu và tin nhắn phải di chuyển theo mọi hướng giữa N thành phần (một biểu đồ được kết nối đầy đủ).
Vào thời điểm tôi rời dự án đó cho một dự án khác, đã có những vấn đề bế tắc ở khắp mọi nơi. Tôi nghe nói rằng 2-3 tháng sau, một số nhà phát triển khác đã cố gắng khắc phục tất cả các vấn đề bế tắc, đến mức nó có thể được chuyển đến khách hàng. Tôi không bao giờ quản lý để tìm ra phần kiến thức còn thiếu mà tôi đang thiếu.
Đôi điều về dự án: số ID thông báo (giá trị nguyên mô tả ý nghĩa của một sự kiện có thể được gửi vào hàng đợi tin nhắn của một đối tượng khác, bất kể luồng) chạy vào hàng ngàn. Chuỗi duy nhất (tin nhắn người dùng) cũng chạy vào khoảng một ngàn.
Thêm
Sự tương tự tốt nhất tôi nhận được từ một nhóm khác (không liên quan đến các dự án trong quá khứ hoặc hiện tại của tôi) là "đưa dữ liệu vào cơ sở dữ liệu". . được lưu trữ trong một plase duy nhất hoạt động như Cơ sở dữ liệu và để "Cơ sở dữ liệu" xử lý tất cả các "cập nhật nguyên tử" liên quan đến các phụ thuộc dữ liệu không tầm thường. Tất cả các phần khác của GUI chỉ xử lý bản vẽ màn hình và không có gì khác. Các bộ phận giao diện người dùng có thể lưu trữ nội dung và người dùng sẽ không nhận thấy nếu nó cũ trong một phần giây, nếu nó được thiết kế đúng. "Cơ sở dữ liệu" này còn được gọi là "tài liệu" trong kiến trúc Xem tài liệu. Thật không may - không, ứng dụng của tôi thực sự lưu trữ tất cả dữ liệu trong Chế độ xem. Tôi không biết tại sao nó lại như vậy.
Thành viên đóng góp:
(những người đóng góp không cần sử dụng các ví dụ thực tế / cá nhân. Bài học từ các ví dụ điển hình, nếu nó được đánh giá bởi chính bạn là đáng tin cậy, cũng được hoan nghênh.)