Ở đây chúng ta sẽ bắt đầu từ những điều cơ bản về giao tiếp giữa các luồng là gì? . Nói một cách đơn giản, đôi khi một luồng có thể được yêu cầu giao tiếp với luồng khác tùy thuộc vào yêu cầu. Đây được coi là Giao tiếp giữa các luồng.
Phương thức sự kiện []. Ở đây chúng ta nói về phương thức Event[], đối tượng Event được xem xét hoặc khuyến nghị là quy trình hoặc hệ thống giao tiếp đơn giản nhất giữa bất kỳ luồng nào. Hệ thống này hoạt động trên hai điều kiện trong đó đối tượng Sự kiện được bật có nghĩa là đặt[] hoặc tắt có nghĩa là xóa[].
cú pháp
event_object = luồng. Biến cố[]
Trong Sự kiện nội bộ quản lý quy trình sẽ hoạt động nội bộ và nó có thể được Đặt [đã bật] hoặc Xóa [đã tắt] bằng cách sử dụng các phương thức trên đối tượng sự kiện. Nếu các luồng được Đặt thì tất cả các luồng sẽ được thực thi nhưng nếu các luồng được Xóa thì nhìn chung tất cả các luồng sẽ chờ thực thi
Ví dụ
Chúng tôi lấy một ví dụ để giải thích cách sử dụng phương thức sự kiện trong việc triển khai giao tiếp giữa các luồng
Python3
#import modules
import
threading
import
time
if
__name__
=
=
'__main__'
import
0
import
1import
2
import
1import
4=
import
6
import
7
import
8 import
9
threading
0
import
1threading
2____23threading
4threading
5
import
1threading
7=
threading
9import
0threading
5
import
1
import
1if
import
5
import
6threading
2____23import
9threading
5
import
1time
2import
0
import
6threading
2____23time
7threading
5
time
9
if
0=
if
2=
if
4
if
5
if
6
if
7____58____25
__name__
0__name__
1__name__
2
threading
2______23__name__
5threading
5
đầu ra
Trong chương trình sau đây, trong đó chúng ta tạo đối tượng sự kiện, sau đó chúng ta tạo một luồng và khởi động nó, bây giờ luồng được đặt đối tượng sự kiện bằng phương thức set[] và trong hàm task[] nơi luồng đang chờ
Dưới đây là một số phương thức chung được sử dụng trong lớp Sự kiện. -
- rõ ràng[] Phương pháp. Phương thức này hoàn toàn ngược lại với phương thức set[], nhưng phương thức này cũng hoạt động như một công cụ thay đổi điều kiện nếu điều kiện trở thành Sai thì luồng nào không chạy hoặc đang chờ, vì vậy chúng vẫn đang ở trạng thái chờ và không
- phương pháp thiết lập [ ]. Trong phương thức set[], chúng tôi đã sử dụng nó như một công cụ thay đổi điều kiện giữa các luồng trong đó nếu điều kiện đúng thì có nhiều luồng đang chờ trạng thái mà chúng sẽ tiếp tục thực thi
- Phương thức isSet[]. Phương thức isSet[] này có ý nghĩa như tên gọi của chúng là được đặt, phương thức này đơn giản hóa rằng sự kiện sau mà chúng ta đã tạo được đặt hay không được đặt
- đợi [thời gian] Phương thức. Để mô tả phương thức wait[] bằng những từ đơn giản, chúng ta có thể nói rằng luồng đợi cho đến khi việc thực thi phương thức set[] chưa hoàn thành. Chúng ta có thể sử dụng thời gian trong đó nếu chúng ta đặt một thời gian nhất định thì quá trình thực thi sẽ dừng lại cho đến khi hết thời gian sau đó nó sẽ vẫn thực thi set[] của một sự kiện vẫn còn
Ở đây chúng tôi sẽ lấy một ví dụ đơn giản để giải thích cách các phương pháp trên được sử dụng trong toàn bộ chương trình
Python3
__name__
7
import
time
=
0
import
threading
=
3 =
4
threading
0
threading
0import
8 =
8=
9=
0
import
1threading
2____23=
4=
5
import
1threading
2____23=
9threading
5
import
1'__main__'
2
import
1threading
2____23'__main__'
6'__main__'
7
threading
0
threading
0____18 import
01=
9import
03
import
1if
7import
06threading
5
import
1threading
2____23import
11import
12
import
1threading
2____23import
16threading
5
import
1import
19
import
1
threading
0import
8 import
23=
9=
0
import
1if
7import
28threading
5
import
1threading
2____23import
33threading
5
import
1__name__
0__name__
1__name__
2
import
39
import
40
import
41=
import
43
import
44
if
__name__
=
=
'__main__'
import
0
threading
0____14=
import
6
import
55
import
56=
if
2=
import
60
import
61=
if
2______7import
65
import
66=
if
2____7import
70
import
71
import
72
import
73
import
74
đầu ra
Đây là một ví dụ đơn giản để giải thích việc sử dụng lớp event[] và các phương thức của chúng trong giao tiếp giữa các luồng. Ở đây chúng tôi sử dụng một ví dụ về người mua-người bán và người bán lẻ, đầu tiên, chúng tôi nhập hai mô-đun là mô-đun luồng và mô-đun thời gian, sau đó chúng tôi tạo một sản phẩm lớp trong đó có chức năng đầu tiên là người mua [] có một số . Ở luồng T3 đầu tiên sẽ thực thi chức năng retail[] nhưng T3 sẽ đợi 10 giây vì bộ đếm thời gian sau T2 này sẽ thực thi nhưng ở đây T2 cũng phải đợi 5 giây, sau đó T1 sẽ chạy . Bây giờ là lúc luồng T3 trong phương thức set[] này được gọi để giải phóng tất cả luồng đang chờ khỏi trạng thái chờ và các luồng như T2 và T1 tiếp tục thực thi