2013-03-25 44 views
9

Tôi đang cố gắng quấn đầu quanh cách hoạt động của luồng, và tôi tin rằng tôi có thể đã làm quá tải nó.Đang cố gắng quấn quanh đầu của tôi

gốc Hiểu:

Previous Tôi nghĩ chủ đề được giới hạn trong một lớp học duy nhất và các lớp con của nó, không có lớp có thể được chia sẻ qua đề, và các thông tin liên lạc giữa các chủ đề đã làm cho nó thực sự khó khăn cho tôi để hiểu.

Hiểu biết mới:

Nhưng tôi càng đọc về nó, thay vào đó có vẻ như chuỗi chỉ chạy ở một điểm ngẫu nhiên trong cùng một mã. Bạn có thể hạn chế nó đến các khu vực nhất định nhưng trong lý thuyết cùng một mã có thể chạy nhiều lần trong mỗi chủ đề.

Để đặt theo cách khác, nếu bạn thấy mã như một hệ thống đường có lượt và kết nối, đó là luồng mà chương trình có thể thực hiện, luồng chính chỉ chạy qua điều này. Nếu một luồng mới được sinh ra, tất cả những gì bạn làm là nói nó nên bắt đầu từ đâu, và mã đi từ đó, có thể sử dụng cùng một lớp và lệnh, vì vậy nếu bạn cấu trúc mã "xấu" thì có nguy cơ hai đoạn mã " crashing ", nhưng bên cạnh đó không có hạn chế về đọc và viết mã, tất cả các phần của cùng một chương trình, chỉ cần nhiều" xe hơi "trên" đường ".

Bạn có thể giới hạn một chuỗi trong một khu vực nhất định (vòng/giới hạn một phần mã) và chỉ tương tác ở một số địa điểm nhất định hoặc bạn có thể bỏ qua nó và chỉ hy vọng tránh "sự cố".


Với "Hiểu biết mới" làm việc với các chủ đề cho tôi dễ dàng hơn nhiều để quấn quanh đầu, do đó, nó có hiểu đúng không?

+7

Vâng, sự hiểu biết sau này của bạn ít nhiều chính xác! Để mở rộng sự tương tự của bạn, các chức năng và đối tượng đồng bộ hóa chuỗi (ví dụ: 'ManualResetEvent' và' lock') giống như đèn giao thông ngăn chặn những chiếc xe va chạm. :) –

+7

Có một ebook miễn phí tuyệt vời về luồng ở đây: ['Albahari'] (http://www.albahari.com/threading/) –

+0

Cảm ơn bạn đã nhập liệu từ cả hai bạn. Đột nhiên làm cho nó rõ ràng hơn rất nhiều cho tôi để làm việc với và quấn quanh đầu tôi. Vì vậy, đơn giản hơn nhiều ... SO nhiều nguy hiểm hơn nếu làm sai :) – Taoh

Trả lời

1

Bạn đã đánh trúng nó khá nhiều. Nói chung chủ đề là có để làm công việc chuyên ngành và sẽ không chồng chéo với nhau. Nếu chủ đề chính phải sinh ra một tiểu chỉ để làm làm việc, chủ đề chính sẽ hầu như không luôn làm việc này làm việc.

Các khu vực mà chúng chồng lên nhau sẽ cần phải là "Chủ đề an toàn" để không đánh vào các ngón chân của nhau; ví dụ: nhiều chuỗi công nhân làm đầy bộ sưu tập cho chuỗi chính. Khi bạn đang tìm kiếm các lớp học trên MSDN, bạn sẽ nhận thấy sự xáo trộn ở phía dưới nói rằng họ có an toàn thread được xây dựng trong hoặc bạn sẽ cần phải làm điều đó cho mình thông qua việc sử dụng .net của khóa, mutexes hoặc semaphores.

+0

Cảm ơn, đã xem xét các chủ đề sai cách trước đó. Là khu vực được tách ra khỏi phần còn lại của chương trình, thay vì nhìn thấy chúng như là "nhiều trình điều khiển", và một cách để tránh va chạm sẽ được tách chúng ra nhưng không được yêu cầu. – Taoh

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