‫Chào mừng trở lại.
‫Trong video này, chúng ta sẽ xem xét các luồng và do đó chúng ta sẽ chỉ làm khái niệm cơ bản
‫về các luồng, nơi bạn sẽ thấy cách tạo một luồng và cách tạo nhiều luồng.
‫Vì vậy, hãy bắt đầu bằng cách sử dụng bảng điều khiển bên phải theo một cách cụ thể.
‫Vì vậy, tôi sẽ tạo ra nhiều thế giới, chẳng hạn như bốn trong số chúng, và tôi sẽ nói Xin
‫chào thế giới một, xin chào thế giới hai, ba và bốn.
‫Vì vậy, những thế giới đó, nếu chúng ta chạy chúng, tất nhiên, trước hết, chúng ta cần phải có đường màu đỏ trên bảng điều khiển để bảng điều
‫khiển luôn mở và vẫn hoạt động.
‫Nếu chúng ta chạy chúng, thì điều rất cơ bản sẽ xảy ra.
‫Vì vậy, họ sẽ in Hello World bốn lần trên màn hình.
‫Và sau đó chúng tôi là Xin chào Thế giới.
‫Một, hai, ba và bốn.
‫Được rồi, không có gì mới cả.
‫Chúng ta đã thấy điều đó rất nhiều trước đây, nhưng có một thứ gọi là luồng, một lớp được gọi là luồng.
‫Và nếu chúng ta muốn sử dụng nó, chúng ta cần sử dụng không gian tên luồng.
‫Vì vậy, sử dụng chủ đề chấm hệ thống và thế là xong.
‫Vì vậy, bây giờ chúng ta có thể sử dụng các chủ đề.
‫Vì vậy, tôi có thể tiếp tục và sử dụng lớp luồng và như bạn có thể thấy, tạo và điều khiển một luồng, đặt mức độ ưu
‫tiên của nó và nhận trạng thái của nó.
‫Vì vậy, những gì chúng ta có thể làm bây giờ là ví dụ: sử dụng chế độ ngủ của chuỗi chấm trong một khoảng thời gian giới hạn,
‫vì vậy giả sử trong 1000 mili giây.
‫Vì vậy, điều đó sẽ làm là nó sẽ tạm dừng toàn bộ chương trình của chúng tôi hoặc chuỗi của chúng
‫tôi trong trường hợp này là chuỗi chính hoặc chuỗi mà nó nằm trong 1/2 sau khi helloworld một được in trên màn hình và chúng ta thực sự
‫có thể làm điều đó sau mỗi câu lệnh.
‫Vì vậy, tôi sẽ nói chỉ cần ngủ trong một khoảng thời gian cụ thể và sau đó chúng ta sẽ.
‫Xin chào thế giới một, hai, ba và bốn.
‫Vì vậy, nó dừng lại nếu tôi nhấp vào nó.
‫Nhưng nhìn chung, bạn có thể thấy nó đã đợi 1/2 và sau giây đó nó sẽ in ra thứ tiếp theo.
‫Vì vậy, những gì nó chỉ đơn giản là thực sự dừng toàn bộ chuỗi.
‫Vì vậy, tạm dừng luồng hiện tại trong một số mili giây cụ thể hoặc được chỉ định.
‫Vì vậy, đó là điều bạn có thể làm nếu bạn muốn làm điều gì đó sau một khoảng thời gian cụ thể.
‫Nhưng hãy lưu ý rằng điều này thực sự đang dừng luồng chính.
‫Vì vậy, không có gì phải làm phải được thực hiện, giả sử trong chuỗi giao diện người dùng có thể được thực hiện.
‫Chúng tôi không sử dụng giao diện người dùng ở đây, chúng tôi đang sử dụng ứng dụng bảng điều khiển trong trường hợp này.
‫Nhưng nếu bạn sử dụng WPF, chẳng hạn, để có giao diện người dùng và bạn tạm dừng chuỗi chính trong 1/2, điều đó có nghĩa là
‫giao diện người dùng sẽ không phản hồi trong cả giây và đó là điều mà người dùng không muốn, và sẽ là
‫hành vi rất xấu mà bạn không nên làm.
‫Nhưng điều đó nói chung chỉ để bạn hiểu những gì bạn có thể làm với các chuỗi ở đây, phải không?
‫Vì vậy, bạn có thể gây ra mối đe dọa trong một khoảng thời gian cụ thể.
‫Nhưng chúng tôi đang sử dụng một chủ đề duy nhất.
‫Đó là chủ đề chính và nếu bạn muốn tìm hiểu thêm về nó, thì bạn phải gỡ lỗi.
‫Và để làm như vậy, chúng tôi thêm một điểm ở đây.
‫Vì vậy, chỉ là một điểm gỡ lỗi mà bạn chỉ cần nhấn vào thanh đó ở đây ở bên trái, giả sử ở dòng chín,
‫nơi phương thức chính bắt đầu.
‫Và sau đó bạn khởi động chương trình và như bạn có thể thấy, không có gì sẽ được hiển thị vì nó tạm dừng ngay tại
‫đây.
‫Vì vậy, đó là nơi chúng ta hiện đang ở, đó là những gì con trỏ.
‫Và để xem các tác vụ, chúng ta cần phải vào gỡ lỗi Windows và sau đó chọn các chủ đề tại đây.
‫Hoặc bạn có thể nhấn điều khiển alt h.
‫Vì vậy, tôi sẽ mở các chuỗi và như bạn có thể thấy, chúng đang trôi nổi đối với tôi và
‫tôi sẽ đặt chúng ngay đây ở phía bên tay trái.
‫Và bây giờ bạn có thể thấy các luồng đang chạy và trong trường hợp của chúng ta, chúng ta chỉ thấy luồng chính.
‫Vì vậy, chỉ có một luồng và nó có ID được quản lý bằng không.
‫Vì vậy, đó là chủ đề chính của chúng tôi và nó thường thực hiện mọi thứ nằm trong phương pháp chính của chúng tôi.
‫Vì vậy, nếu tôi đi đến bước tiếp theo.
‫Như bạn có thể thấy, chúng tôi vẫn đang trong chuỗi chính và chúng tôi chờ 1/2.
‫Chúng tôi thấy thế giới thực sự mở ra như thế nào.
‫Bạn có thể thấy nó.
‫Vì vậy, bây giờ nó là một câu chuyện của thế giới thứ ba.
‫Chúng tôi ngủ trong 1/2 và sau đó nó đợi chúng tôi thực hiện bước tiếp theo.
‫Vì vậy, bạn có thể nhấn F ten để chuyển sang bước tiếp theo và sau đó nó sẽ hiển thị hello world chỉ một giây sau đó.
‫Đúng vậy.
‫Xin chào thế giới bốn.
‫Và sau đó dòng màu đỏ này xuất hiện.
‫Vì vậy, bây giờ tôi chỉ cần nhấn một cái gì đó như enter hoặc bất cứ điều gì và ở đây và chuyển sang bước tiếp theo.
‫Và như bạn có thể thấy, chúng tôi vẫn đang ở trong chủ đề chính.
‫Và chương trình của chúng tôi đóng lại, vì vậy không có chủ đề nào nữa.
‫Vì vậy, đó là tốt và tất cả, nhưng đó chỉ là chủ đề chính của chúng tôi và điều đó hơi nhàm chán.
‫Chúng tôi muốn xem cách tạo chuỗi và đó là những gì chúng tôi ở đây để làm.
‫Vì vậy, chúng ta hãy tiếp tục và tự tạo nhiều luồng, bởi vì những gì xảy ra ở đây là nó được thực
‫hiện tuần tự.
‫Cứ thế từng bước, hết hàng này đến hàng kia.
‫Nhưng nếu chúng ta muốn thực hiện mọi thứ song song, chúng ta có thể tạo luồng của riêng mình vì chúng ta không muốn
‫nó chạy trong luồng chính mà chúng ta muốn chạy Song song.
‫Vì vậy, những gì tôi sẽ làm là tôi sẽ tạo ra một mối đe dọa mới ở đây.
‫Tôi chỉ nói mới và sau đó tôi sẽ gọi nó là chủ đề.
‫Vì vậy, tôi chỉ đang sử dụng lớp luồng ở đây và bạn cần lại dấu ngoặc và dấu ngoặc.
‫Và sau những dấu ngoặc đó, cái thứ hai, và ở đây bạn sử dụng dấu ngoặc nhọn và sin bằng nhau và lớn hơn.
‫Và sau khi dấu ngoặc ở đây đóng lại, bạn cần bắt đầu.
‫Vì vậy, đó là cách bạn bắt đầu một chủ đề.
‫Vì vậy, tôi đã tạo một chuỗi mới và nó bắt đầu ngay lập tức vì tôi đang gọi Start Here.
‫Chỉ phương thức Start khiến hệ điều hành thay đổi trạng thái của phiên bản hiện tại thành trạng thái luồng
‫đang chạy.
‫Vì vậy, luồng này sẽ có trạng thái luồng này đang chạy, có nghĩa là nó sẽ đơn giản thực thi bất cứ thứ gì
‫nằm trong dấu ngoặc nhọn của nó.
‫Vì vậy, đó là nơi chúng ta có thể thêm mã của mình mà chúng ta muốn chạy bất cứ khi nào luồng này được gọi.
‫Vì vậy, hãy nói rằng chủ đề này ở đây là một chủ đề của chúng tôi.
‫Vì vậy, tôi sẽ viết một cái gì đó như chuỗi một, CW Thread một, và trên hết, tôi sẽ đi ngủ
‫trong một giây.
‫Vì vậy, hãy ngủ trong 1000 mili giây, tức là 1/2.
‫Vì vậy, đó là những gì chủ đề này sẽ làm.
‫Và những gì tôi sẽ làm là tôi sẽ đặt nhiều chủ đề bên dưới nó.
‫Vì vậy, hãy xâu chuỗi một, hai, ba và bốn.
‫Vì vậy, tôi sẽ đổi tên chúng và tôi sẽ bình luận.
‫Những cái mà chúng tôi có trước đây.
‫Vì vậy, giao diện điều khiển bên phải và bây giờ chúng ta hãy chạy nó.
‫Và chúng tôi ở đó.
‫Như bạn có thể thấy, nó xuất hiện cùng một lúc.
‫Vì vậy, nó đợi 1/2 và sau đó tất cả chúng xuất hiện cùng một lúc.
‫Vậy điều gì đã xảy ra ở đó?
‫Hãy để tôi thực sự đi vào điểm đó ở đây và có thể là điểm.
‫Vâng, ngay đó.
‫Vì vậy, chúng ta hãy chạy lại nó.
‫Bây giờ chúng ta thấy chương trình của chúng ta dừng ngay tại đây.
‫Vì vậy, đó là nơi nó được.
‫Nhưng đồng thời, ở đây trong cửa sổ luồng ở phía dưới, bạn có thể thấy rằng có
‫hai luồng đã được mở ra và một luồng công nhân không có tên và một luồng công nhân khác cũng không có
‫tên.
‫Vì vậy, chúng tôi có luồng mới này đang chạy và sau đó một trong các luồng khác cũng được
‫mở.
‫Và như bạn có thể thấy chuỗi chính.
‫Vì vậy, có ba chủ đề cùng một lúc.
‫Bây giờ chúng ta hãy chuyển sang bước tiếp theo.
‫Như bạn có thể thấy tại thời điểm đó, đột nhiên có bốn chủ đề và do đó đó là bốn chủ đề mà chúng ta có
‫ở đây.
‫Vì vậy, khi cái đầu tiên bắt đầu, chỉ có thể cái thứ hai đã sẵn sàng, nhưng những cái khác vẫn chưa
‫sẵn sàng.
‫Và bây giờ tại điểm mà luồng trượt trong 1000 mili giây sau một mili giây trôi qua hoặc thậm chí ít hơn,
‫bạn có thể thấy rằng các luồng khác đã bắt đầu.
‫Vì vậy, chúng tôi có bốn luồng chạy cùng một lúc.
‫Vì vậy, chúng tôi có một giải pháp đa luồng ở đây.
‫Và nếu tôi thực hiện bước tiếp theo, như bạn có thể thấy, luồng hai, ba và bốn đã được hiển thị, nhưng
‫luồng một bên phải bảng điều khiển như bạn có thể thấy, vẫn chưa được hiển thị.
‫Vì vậy, chúng chạy song song, nhưng chúng không hoàn toàn chính xác như bạn có thể thấy.
‫Vì vậy, có thể có sự khác biệt nhỏ về thời gian mà chúng cần được thực hiện.
‫Vì vậy, tôi sẽ đi đến bước tiếp theo hàng này ở đây.
‫Và như bạn có thể thấy bây giờ, luồng một cũng đã hoàn thành.
‫Vì vậy, mặc dù các chủ đề.
‫Hoặc theo một thứ tự cụ thể ở đây, trong mã của tôi, chúng được bắt đầu nhiều hơn hoặc ít hơn cùng một lúc.
‫Và như bạn có thể thấy, nó không cần phải theo thứ tự chính xác như chúng ta nghĩ.
‫Vì vậy, nó sẽ không được hoàn thành theo thứ tự chính xác mà chúng tôi đã định vị chúng ở đây.
‫Nhưng dựa trên tốc độ họ có thể hoàn thành hoặc thực thi bất kỳ mã nào.
‫Vì vậy, có thể xảy ra trường hợp mã này cần dài hơn một chút hoặc dài hơn các mã khác một chút.
‫Vì vậy, đó là những gì bạn phải thực hiện để bạn có thể làm việc với các luồng, nhưng bạn phải
‫rất, rất cẩn thận vì có thể có nhiều thứ có thể xảy ra sai sót.
‫Và tôi sẽ che một số trong số chúng và tôi sẽ cho bạn xem hoặc cho bạn, và tôi sẽ che một số trong số
‫chúng.
‫Và tôi cũng sẽ chia sẻ các liên kết với bạn, nơi bạn có thể đọc thêm nhiều điều về điều đó.
‫Vì vậy, đó là về ý tưởng cơ bản về cách tạo các luồng.
‫Như bạn có thể thấy, đó là cách bạn có thể thiết lập mọi thứ.
‫Vì vậy, các luồng nói chung là một phần công việc nhỏ hoặc một phần công việc được thực thi và bạn có thể thực
‫thi nhiều thứ cùng một lúc nếu bạn có nhiều lõi trong bộ xử lý của mình.
‫Vì vậy, giả sử bạn có một bộ xử lý bốn lõi, thì bốn luồng hoặc bốn bộ xử lý cùng một lúc
‫có thể được thực thi.
‫Giả sử nếu bạn có, chỉ một bộ xử lý, thì chỉ một luồng hoặc một tác vụ tại thời điểm đó có thể được thực thi, sẽ không bao giờ
‫xảy ra việc đó.
‫Chúng sẽ được thực thi song song vì một bộ xử lý này chỉ làm một việc cụ thể tại một thời điểm.
‫Điều đó có nghĩa là nếu bạn biết rằng bạn đang làm việc với bộ xử lý đa lõi hoặc ứng dụng của bạn sẽ
‫chạy trên bộ xử lý đa lõi, bạn có thể làm việc với nhiều luồng, nếu không thì bạn sẽ gặp sự cố.
‫Nhưng nhìn chung cách nó hoạt động, nếu bạn chỉ có một lõi, thì luồng chính sẽ chạy và chỉ
‫khi luồng chính không hoạt động, thì nó sẽ tiếp tục và làm những việc khác.
‫Vì vậy, nó sẽ chạy các mối đe dọa khác.
‫Giả sử bạn có một giao diện người dùng và trên giao diện người dùng đó, bạn chỉ hiển thị mọi thứ.
‫Bạn có một nút.
‫Sau đó, nếu bạn di chuột qua nút, nó sẽ thay đổi hình thức của nó, đại loại như vậy.
‫Đó là thứ được thực hiện bởi luồng chính.
‫Nhưng nếu luồng chính không bận, thì các luồng khác sẽ bắt đầu.
‫Vì vậy, điều gì sẽ xảy ra nếu bạn có một cái gì đó cần được chạy ở chế độ nền, thì điều đó
‫sẽ được thực hiện bất cứ khi nào luồng một luồng chính không bận hoặc luồng không.
‫Thực ra nó ở đây.
‫Vì vậy, đó là về chủ đề.
‫Tất nhiên, chúng tôi sẽ xem xét các chủ đề nhiều hơn một chút, nhưng nói chung đó là những gì tôi muốn cho bạn thấy
‫để bắt đầu.