در این مطلب، ویدئو Async خود را بسازید با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 2:12:41
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:01,429 –> 00:00:04,410
دیوید بیزلی در اینجا است، فیلمی
2
00:00:04,410 –> 00:00:06,509
که می خواهید تماشا کنید،
3
00:00:06,509 –> 00:00:08,370
مربوط به کارگاهی است که در ابتدا
4
00:00:08,370 –> 00:00:11,880
در کنفرانس PyCon هند در اکتبر
5
00:00:11,880 –> 00:00:15,599
2009 ارائه شد، کارگاه اصلی دارای برخی نکات
6
00:00:15,599 –> 00:00:18,510
فنی صوتی و تصویری بود که
7
00:00:18,510 –> 00:00:20,670
در واقع ضبط را به نوعی بسیار
8
00:00:20,670 –> 00:00:21,930
دشوار می کرد، منظورم این است که انواع زیادی وجود دارد.
9
00:00:21,930 –> 00:00:23,820
از اعوجاج و مصنوعات و
10
00:00:23,820 –> 00:00:25,500
چیزهای دیگری که منجر به یک
11
00:00:25,500 –> 00:00:28,980
نوع مصنوع بسیار خوب از مصنوعات بسیار خوب
12
00:00:28,980 –> 00:00:31,710
برای مشاهده بعدی نشده است، بنابراین کاری که من
13
00:00:31,710 –> 00:00:34,350
تصمیم گرفتم انجام دهم این است که در واقع یک نوع جلسه را دوباره ضبط
14
00:00:34,350 –> 00:00:35,700
کنم که کمی زنده است.
15
00:00:35,700 –> 00:00:38,820
کدنویسی و پوشش دادن همان مطالب در اینجا
16
00:00:38,820 –> 00:00:40,350
و امیدواریم به نوعی تمیز کردن آن،
17
00:00:40,350 –> 00:00:41,760
تماشای آن را کمی آسانتر کند،
18
00:00:41,760 –> 00:00:42,989
این چیزی است که در اینجا خواهید دید.
19
00:00:42,989 –> 00:00:45,390
20
00:00:45,390 –> 00:00:47,789
21
00:00:47,789 –> 00:00:50,250
برای درک
22
00:00:50,250 –> 00:00:53,309
کار و تفکر درونی که
23
00:00:53,309 –> 00:00:55,440
در این چارچوبهای غیر همگام انجام میشود، میدانید که مانند
24
00:00:55,440 –> 00:00:58,859
async IO curio trio چیزهایی مانند
25
00:00:58,859 –> 00:01:02,219
آن را میدانید، اما بسیار روی آن متمرکز است، من به
26
00:01:02,219 –> 00:01:03,809
نوعی
27
00:01:03,809 –> 00:01:06,869
حرفهای هستم مدل گرامر برخلاف بسیاری
28
00:01:06,869 –> 00:01:09,840
از جزئیات فنی مربوط به
29
00:01:09,840 –> 00:01:12,299
شما مانند کتابخانه های IO و چیزهای دیگر
30
00:01:12,299 –> 00:01:14,850
، بنابراین هدف واقعاً این است که
31
00:01:14,850 –> 00:01:16,950
مدل اصلی برنامه نویسی را کشف کند
32
00:01:16,950 –> 00:01:18,600
و همچنین فقط به نوعی
33
00:01:18,600 –> 00:01:21,450
آگاهی از چرایی این کتابخانه ها داشته باشد.
34
00:01:21,450 –> 00:01:23,850
تمایل به ظاهر پیچیده به نظر می رسد، می
35
00:01:23,850 –> 00:01:25,080
دانید اگر تا به حال به
36
00:01:25,080 –> 00:01:27,270
کد منبع چیزی مانند IO async نگاه کرده باشید، ممکن است
37
00:01:27,270 –> 00:01:29,159
به شما تب بسیار ترسناکی بدهد
38
00:01:29,159 –> 00:01:32,729
که وارد آنجا شوید، بنابراین ما سعی می کنیم تا حدی تلاش کنیم
39
00:01:32,729 –> 00:01:34,950
تا آن را باز کنیم که کمی در حال حاضر
40
00:01:34,950 –> 00:01:37,799
برای شروع کاری که میخواستم
41
00:01:37,799 –> 00:01:39,930
انجام دهم، فقط صحبت در مورد
42
00:01:39,930 –> 00:01:43,530
مشکل اساسی است که در این کتابخانهها به آن پرداخته میشود
43
00:01:43,530 –> 00:01:45,180
و اساساً
44
00:01:45,180 –> 00:01:49,619
مشکل اساسی یکی از
45
00:01:49,619 –> 00:01:52,020
46
00:01:52,020 –> 00:01:56,130
همزمانی است. بنابراین برای شروع به من اجازه
47
00:01:56,130 –> 00:01:57,270
دهید چند تابع را در اینجا بنویسم،
48
00:01:57,270 –> 00:01:58,409
ما از
49
00:01:58,409 –> 00:01:59,610
چند تابع فقط برای نشان دادن استفاده خواهیم کرد،
50
00:01:59,610 –> 00:02:01,380
بنابراین فرض کنید یک تابع شمارش
51
00:02:01,380 –> 00:02:05,759
معکوس مرده داشته اید، فقط می دانید که آن را چاپ
52
00:02:05,759 –> 00:02:08,098
کنید اعداد میخواهم
53
00:02:08,098 –> 00:02:12,959
کمی بخوابد تا کمی
54
00:02:12,959 –> 00:02:13,710
کندتر کار کند،
55
00:02:13,710 –> 00:02:14,820
بنابراین فرض کنید یک تابع شمارش معکوس
56
00:02:14,820 –> 00:02:16,710
مانند آن دارید و سپس فرض
57
00:02:16,710 –> 00:02:20,610
کنید یک تابع چگونه شمارش تا بالا را داشتید که
58
00:02:20,610 –> 00:02:22,380
کار مشابهی را انجام داد زیرا یک X وحشی
59
00:02:22,380 –> 00:02:32,340
کمتر از توقف زمان X زمان خواب 1+1
60
00:02:32,340 –> 00:02:33,750
خوب، پس بیایید ببینیم فرض کنید شما
61
00:02:33,750 –> 00:02:36,060
چند تابع داشتید، مدل برنامه نویسی
62
00:02:36,060 –> 00:02:38,970
که اکثر برنامه نویسان با آن آشنا هستند
63
00:02:38,970 –> 00:02:40,980
، اساساً اجرای متوالی است
64
00:02:40,980 –> 00:02:44,520
و اساساً این جایی است که شما
65
00:02:44,520 –> 00:02:46,980
مانند یک تابع و سپس
66
00:02:46,980 –> 00:02:49,260
بعد و سپس یک تابع بعد از آن، بنابراین اگر
67
00:02:49,260 –> 00:02:50,670
میخواهید کد را به این شکل ساختار دهید،
68
00:02:50,670 –> 00:02:53,010
بنابراین شما دو تابع را داشته باشید و
69
00:02:53,010 –> 00:02:54,030
فقط آنها را یکی پس از دیگری فراخوانی کنید،
70
00:02:54,030 –> 00:02:55,980
آنها را خواهید دید که هر بار اجرا میشوند
71
00:02:55,980 –> 00:03:00,120
، بیایید آن را دوباره امتحان کنیم. در
72
00:03:00,120 –> 00:03:02,760
یک پنجره جداگانه در اینجا بسیار خوب است، بنابراین اگر من
73
00:03:02,760 –> 00:03:05,100
Python مثال نقطه PI را اجرا
74
00:03:05,100 –> 00:03:07,440
کنم، ابتدا نوع عملکرد پایین تابع
75
00:03:07,440 –> 00:03:09,180
را مشاهده خواهید کرد که تا پایان کامل می شود
76
00:03:09,180 –> 00:03:10,560
و سپس می بینید که تابع up
77
00:03:10,560 –> 00:03:14,550
اجرا می شود پس از آن خوب است. تا t
78
00:03:14,550 –> 00:03:16,470
همان مدل برنامه نویسی است
79
00:03:16,470 –> 00:03:19,170
که اکثر برنامه نویسان با آن آشنا هستند، به
80
00:03:19,170 –> 00:03:21,150
همین دلیل است که اساساً همه کدهای پایتون
81
00:03:21,150 –> 00:03:24,240
Snore Mele را اجرا می کنند، اکنون مشکل
82
00:03:24,240 –> 00:03:26,520
آن این است که شما اغلب برنامه هایی می نویسید
83
00:03:26,520 –> 00:03:28,800
که نیاز به انجام بیش از یک کار در یک
84
00:03:28,800 –> 00:03:31,110
زمان دارند و سپس مثال کلاسیک. از
85
00:03:31,110 –> 00:03:34,260
اینها چیزهایی مانند سرورهای شبکه هستند
86
00:03:34,260 –> 00:03:35,880
که می دانید شاید من دارم یک سرویس شبکه می
87
00:03:35,880 –> 00:03:38,640
نویسم که باید چندین سرویس را مدیریت کنم، می دانید شاید
88
00:03:38,640 –> 00:03:40,980
کلاینت هایی که همزمان به آن سرویس متصل هستند،
89
00:03:40,980 –> 00:03:43,560
نمی توانم آن را در جایی که
90
00:03:43,560 –> 00:03:45,420
می دانید نرم افزار کجاست تنظیم کنم. فقط
91
00:03:45,420 –> 00:03:48,690
با یک مشتری صحبت می کند و سپس این کار را انجام
92
00:03:48,690 –> 00:03:50,310
می دهد تا زمانی که مشتری تمام شود و سپس
93
00:03:50,310 –> 00:03:52,290
به مشتری بعدی تغییر
94
00:03:52,290 –> 00:03:55,290
95
00:03:55,290 –> 00:03:57,150
96
00:03:57,150 –> 00:04:00,030
می کند.
97
00:04:00,030 –> 00:04:01,160
میدانید چگونه
98
00:04:01,160 –> 00:04:04,920
اجرای همزمان را انجام میدهید، جایی که ممکن است
99
00:04:04,920 –> 00:04:07,770
هر دو عملکرد را به طور همزمان اجرا کنید، اکنون یک
100
00:04:07,770 –> 00:04:10,260
راهحل کلاسیک مشکلی ندارد، بنابراین
101
00:04:10,260 –> 00:04:15,630
شاید سادهترین و رایجترین
102
00:04:15,630 –> 00:04:17,548
راه حل این باشد که اساساً از
103
00:04:17,548 –> 00:04:20,519
برنامه نخ استفاده کنید. پایتون یک
104
00:04:20,519 –> 00:04:22,590
ماژول رشتهبندی دارد که میتوانید از آن برای راهاندازی رشتهها استفاده کنید
105
00:04:22,590 –> 00:04:24,240
و اساساً
106
00:04:24,240 –> 00:04:26,400
به نظر میرسد این است که ما اساساً میگوییم
107
00:04:26,400 –> 00:04:27,460
خوب است
108
00:04:27,460 –> 00:04:29,289
، بیایید یک رشته را راهاندازی کنیم، میدانیم
109
00:04:29,289 –> 00:04:31,539
که در آن آرگها پنج هستند و
110
00:04:31,539 –> 00:04:33,820
بیایید خوب، شروع کنیم و سپس
111
00:04:33,820 –> 00:04:35,979
ما با یک رشته دیگر کار
112
00:04:35,979 –> 00:04:40,240
می کنیم، شما می دانید که تعداد هدف تا پنج خوب است، بنابراین
113
00:04:40,240 –> 00:04:43,419
شما دو رشته را راه اندازی می کنید و
114
00:04:43,419 –> 00:04:45,460
اتفاقی که در اینجا رخ می دهد این است که اساساً آن موضوعات
115
00:04:45,460 –> 00:04:47,860
به طور مستقل اجرا می شوند، اما به
116
00:04:47,860 –> 00:04:50,590
طور همزمان، بنابراین اگر من به
117
00:04:50,590 –> 00:04:52,600
اینجا بروم و دوباره کد را اجرا کنم، در واقع اجازه می دهم
118
00:04:52,600 –> 00:04:55,419
من اجرای متوالی خود را
119
00:04:55,419 –> 00:05:00,340
در اینجا کامنت میکنم، میبینید که آنها همزمان میروند و میبینید که به طور همزمان
120
00:05:00,340 –> 00:05:02,410
به سمت پایین و بالا
121
00:05:02,410 –> 00:05:05,169
میروید، گاهی اوقات
122
00:05:05,169 –> 00:05:06,639
ترتیب کمی
123
00:05:06,639 –> 00:05:08,560
غیرقابل پیشبینی است زیرا میدانید
124
00:05:08,560 –> 00:05:10,449
چیزهایی را زمانبندی میدانید، اما
125
00:05:10,449 –> 00:05:12,729
رشتهها. اساساً به شما اجازه می دهد تا بیش
126
00:05:12,729 –> 00:05:13,990
از یک کار را در یک زمان انجام دهید
127
00:05:13,990 –> 00:05:16,120
، چند نظر در مورد
128
00:05:16,120 –> 00:05:18,639
رشته ها اغلب به نوعی شهرت بدی پیدا می کنند
129
00:05:18,639 –> 00:05:21,240
و گاهی اوقات پایتون
130
00:05:21,240 –> 00:05:24,599
هرگز نباید از آن استفاده کنید. reads یا threads یا
131
00:05:24,599 –> 00:05:27,070
ناکارآمد یا برخی دیگر را می شناسید
132
00:05:27,070 –> 00:05:29,949
برخی دیگر بهانه دیگری با رشته ها یک
133
00:05:29,949 –> 00:05:32,199
نظر من در مورد موضوع این است که رشته ها در
134
00:05:32,199 –> 00:05:35,349
پایتون اساساً همان نخ ها هستند
135
00:05:35,349 –> 00:05:38,110
و می بینید که می دانید مانند
136
00:05:38,110 –> 00:05:41,139
یک thread پایتون کاملاً متوجه شده اید که سیستم عامل واقعی را می شناسید.
137
00:05:41,139 –> 00:05:43,180
thread مانند یک
138
00:05:43,180 –> 00:05:47,199
نخ نخودی یا یک رشته POSIX است، ماهی
139
00:05:47,199 –> 00:05:49,150
است که مفسر پایتون
140
00:05:49,150 –> 00:05:51,789
بهطور کامل در داخل آن کار میکند،
141
00:05:51,789 –> 00:05:54,430
بسیاری از شما نمیدانید که نوعی
142
00:05:54,430 –> 00:05:56,530
سربار اضافی مرتبط با نخ پایتون است
143
00:05:56,530 –> 00:06:00,909
، بنابراین استفاده از رشتهها و خط لوله انجام نمیشود.
144
00:06:00,909 –> 00:06:03,190
واقعاً میدانید که
145
00:06:03,190 –> 00:06:05,470
منابع فشردهتر از آنچه که هست نیست و
146
00:06:05,470 –> 00:06:07,930
مانند یک دریا یا یک برنامه ++C که از رشتهها استفاده میکند
147
00:06:07,930 –> 00:06:11,050
، یکی از مشکلات اصلی
148
00:06:11,050 –> 00:06:13,389
رشتهها مربوط به قفل مفسر جهانی است
149
00:06:13,389 –> 00:06:15,970
و من واقعاً
150
00:06:15,970 –> 00:06:18,130
در اینجا در مورد آن صحبت نمیکنم، اما پایتون. دارای یک
151
00:06:18,130 –> 00:06:21,370
قفل جهانی است که از
152
00:06:21,370 –> 00:06:24,060
اجرای رشته ها به معنای موازی واقعی مانند
153
00:06:24,060 –> 00:06:27,659
همزمان روی چندین هسته CPU جلوگیری می کند، بنابراین
154
00:06:27,659 –> 00:06:29,710
رشته ها در پایتون در واقع به نوعی
155
00:06:29,710 –> 00:06:32,620
محدود به اجرای یک آهنگ هستند. هسته CPU و
156
00:06:32,620 –> 00:06:34,750
به همین دلیل شما
157
00:06:34,750 –> 00:06:37,300
مانند یک مزیت عملکردی که
158
00:06:37,300 –> 00:06:38,950
احتمالاً واقعی است،
159
00:06:38,950 –> 00:06:40,300
160
00:06:40,300 –> 00:06:43,449
161
00:06:43,449 –> 00:06:45,550
نخواهید داشت
162
00:06:45,550 –> 00:06:46,870
. واقعاً قرار بود یک آموزش برنامهنویسی رشته باشد،
163
00:06:46,870 –> 00:06:50,139
اما فقط به
164
00:06:50,139 –> 00:06:51,639
خاطر داشته باشید که میدانید مثل اینکه رشتهها
165
00:06:51,639 –> 00:06:55,500
یکی از راههای اجرای کد هستند،
166
00:06:55,500 –> 00:06:59,199
اکنون مشکلی که ما به آن میپردازیم این است
167
00:06:59,199 –> 00:07:00,970
که اگر نداشتید چگونه همزمانی را انجام میدادید.
168
00:07:00,970 –> 00:07:04,330
رشته هایی مانند what اگر شما
169
00:07:04,330 –> 00:07:06,550
این را نداشتید مانند شما فقط
170
00:07:06,550 –> 00:07:09,639
کتابخانه رشته را نداشتید و می خواستید
171
00:07:09,639 –> 00:07:13,060
کدی را به طور همزمان اجرا کنید.
172
00:07:13,060 –> 00:07:16,599
173
00:07:16,599 –> 00:07:18,219
174
00:07:18,219 –> 00:07:19,840
مثلاً چرا
175
00:07:19,840 –> 00:07:22,389
میخواهید این کار را انجام دهید، بدانید
176
00:07:22,389 –> 00:07:24,159
که چرا به نوعی یک
177
00:07:24,159 –> 00:07:26,349
مورد جالب است، منظور من برخی از
178
00:07:26,349 –> 00:07:29,710
پاسخهای متداول برای این است که
179
00:07:29,710 –> 00:07:31,780
ممکن است در تلاش باشید تا این کار را انجام دهید یا حل کنید.
180
00:07:31,780 –> 00:07:34,479
181
00:07:34,479 –> 00:07:37,020
تا حدی عالی است منظورم این است که شما می توانید آیا
182
00:07:37,020 –> 00:07:38,979
پایتون می تواند به راحتی
183
00:07:38,979 –> 00:07:40,900
صدها رشته را مدیریت کند اما ممکن است
184
00:07:40,900 –> 00:07:42,430
موردی داشته باشید
185
00:07:42,430 –> 00:07:45,219
که بخواهید برنامه ای بنویسید که در آن مانند
186
00:07:45,219 –> 00:07:47,139
هزاران اتصال شبکه یا
187
00:07:47,139 –> 00:07:47,620
چیزی
188
00:07:47,620 –> 00:07:51,639
5000 اتصال شبکه ایجاد می کند که 5000
189
00:07:51,639 –> 00:07:53,880
رشته ایجاد می کند که می دانید ممکن است روی آنها کار
190
00:07:53,880 –> 00:07:56,139
کند. منظورم این است که
191
00:07:56,139 –> 00:07:58,389
احتمالاً میتوانید سیستم عامل را شمارهگیری کنید تا
192
00:07:58,389 –> 00:08:00,759
این کار را انجام دهید، اما بسیاری از مردم به آن
193
00:08:00,759 –> 00:08:03,639
نگاه میکنند و فقط میگویند اکنون
194
00:08:03,639 –> 00:08:05,500
باید کار دیگری انجام دهیم، خوب، ما
195
00:08:05,500 –> 00:08:07,150
نمیخواهیم بنویسیم ما نمیخواهیم برای انجام 5000
196
00:08:07,150 –> 00:08:10,029
موضوع دیگر دلیل دیگری
197
00:08:10,029 –> 00:08:11,800
برای استفاده نکردن از نخ ها این است
198
00:08:11,800 –> 00:08:13,529
که کمی کنترل بیشتری بر روی
199
00:08:13,529 –> 00:08:16,300
اتفاقاتی که در حال رخ دادن است داشته باشید.
200
00:08:16,300 –> 00:08:18,490
201
00:08:18,490 –> 00:08:22,120
202
00:08:22,120 –> 00:08:23,740
پس از ایجاد آنها
203
00:08:23,740 –> 00:08:25,180
منظورم این است که شاید
204
00:08:25,180 –> 00:08:26,349
شما نمی خواهید کمی
205
00:08:26,349 –> 00:08:27,669
کنترل بیشتری بر روی اتفاقی که در حال
206
00:08:27,669 –> 00:08:30,520
رخ دادن است داشته باشید، بنابراین ممکن است
207
00:08:30,520 –> 00:08:32,409
دلایلی برای عدم استفاده از موضوعات در حال
208
00:08:32,409 –> 00:08:35,469
حاضر وجود داشته باشد. سوالی که پیش میآید این است
209
00:08:35,469 –> 00:08:38,019
که چگونه میتوانید همزمانی را
210
00:08:38,019 –> 00:08:39,789
بدون رشتهها انجام دهید، بنابراین من میخواهم
211
00:08:39,789 –> 00:08:41,828
موضوعات را از جدول در اینجا حذف کنم، بنابراین
212
00:08:41,828 –> 00:08:43,328
نگاه کنید، بنابراین موضوعات را فراموش کنید، ما در
213
00:08:43,328 –> 00:08:46,540
مورد موضوعات صحبت نمیکنیم و میخواهیم
214
00:08:46,540 –> 00:08:49,470
داشته باشیم، میخواهیم این دو تابع را به
215
00:08:49,470 –> 00:08:53,990
طور همزمان اجرا کنید چگونه می توانیم
216
00:08:53,990 –> 00:08:59,360
دوباره این کار را انجام دهیم بدون اینکه رشته ای وجود نداشته باشد،
217
00:08:59,360 –> 00:09:02,300
بنابراین این در واقع
218
00:09:02,300 –> 00:09:05,120
نوعی چالش برنامه نویسی جالب را ارائه می دهد
219
00:09:05,120 –> 00:09:08,029
، بنابراین اجازه دهید
220
00:09:08,029 –> 00:09:09,980
من کدی را که می خواهم بردارم.
221
00:09:09,980 –> 00:09:11,600
در آن سقوط دیگری به نام
222
00:09:11,600 –> 00:09:14,480
فعلاً یک سینک را به رخ میکشد، بنابراین
223
00:09:14,480 –> 00:09:18,260
من توابع را در آنجا قرار میدهم و
224
00:09:18,260 –> 00:09:20,660
این نوع مشکل را مطرح میکنم که
225
00:09:20,660 –> 00:09:25,360
اساساً مشکل چگونگی دستیابی به همزمانی است
226
00:09:25,360 –> 00:09:27,709
به این معنی که هر دو عملکرد
227
00:09:27,709 –> 00:09:34,790
بدون انجام نخ پیشرفت خواهند کرد. و
228
00:09:34,790 –> 00:09:37,910
در اینجا دلیل این است که اساساً مشکل است
229
00:09:37,910 –> 00:09:41,149
، مشکل اینجاست که شما
230
00:09:41,149 –> 00:09:42,560
باید راهی برای جابهجایی بین
231
00:09:42,560 –> 00:09:53,060
موارد مشابه برای جابجایی به عقب و جلو
232
00:09:53,060 –> 00:09:54,709
بیابید.
233
00:09:54,709 –> 00:09:58,310
234
00:09:58,310 –> 00:10:02,270
چطور این کار را انجام میدهی و اینجاست،
235
00:10:02,270 –> 00:10:05,120
این یک نوع چالش است
236
00:10:05,120 –> 00:10:07,670
که اگر به توابع نگاه کنید،
237
00:10:07,670 –> 00:10:10,459
هر دوی آنها اساساً این حلقه درونی را
238
00:10:10,459 –> 00:10:12,350
دارند مانند حلقه while، شما مقدار کمی و
239
00:10:12,350 –> 00:10:14,270
بزرگتر از صفر را میدانید و آنجا مینشیند و
240
00:10:14,270 –> 00:10:16,220
آن را نشان میدهد. اجرا میشود و میخواهم بدانی در حالی که X کمتر
241
00:10:16,220 –> 00:10:19,490
از توقف است تا بتوانم
242
00:10:19,490 –> 00:10:23,720
بین کارها جابجا شوم، اگر میخواهی،
243
00:10:23,720 –> 00:10:25,459
باید راهی برای قطع کردن
244
00:10:25,459 –> 00:10:27,829
حلقه درست پیدا کنم، یعنی باید بدانم.
245
00:10:27,829 –> 00:10:29,390
246
00:10:29,390 –> 00:10:33,829
در همان زمان نمیتوانم این را داشته باشم،
247
00:10:33,829 –> 00:10:35,990
نمیتوانم این حلقه را داشته باشم، درست مثل
248
00:10:35,990 –> 00:10:39,260
چرخیدن، زیرا هیچ راهی
249
00:10:39,260 –> 00:10:42,170
برای قطع کردن اتفاقی که در حال وقوع است وجود ندارد، بنابراین
250
00:10:42,170 –> 00:10:46,220
ساختار حلقهای که باید
251
00:10:46,220 –> 00:10:47,990
از شر آن خلاص شویم وجود دارد. که ما نمی توانیم این کار را درست انجام دهیم،
252
00:10:47,990 –> 00:10:50,360
بنابراین نمی تواند مانند وجود
253
00:10:50,360 –> 00:10:54,170
داشته باشد، نمی توان حلقه زدن را انجام داد، اما اگر من
254
00:10:54,170 –> 00:10:59,120
نتوانم حلقه زدن را انجام دهم، پت را دوست دارم
255
00:10:59,120 –> 00:11:02,060
چگونه دوست دارم چگونه دنباله ای را دوست دارم این نوع
256
00:11:02,060 –> 00:11:03,829
چیزها مانند چگونه می توانم دریافت کنم چیزهایی که باید
257
00:11:03,829 –> 00:11:07,820
به نوعی جایگزین شوند، بنابراین
258
00:11:07,820 –> 00:11:12,820
یک رویکرد در مورد اکشن، اصولاً همه است
259
00:11:12,820 –> 00:11:16,850
زمانبندی توابع پاسخ به تماس یا
260
00:11:16,850 –> 00:11:19,010
زمانبندی فراخوانیهای تابع اجازه دهید به من اجازه دهید به
261
00:11:19,010 –> 00:11:20,240
شما نشان دهم که چگونه این
262
00:11:20,240 –> 00:11:23,180
کار درست کار میکند، بنابراین کاری که
263
00:11:23,180 –> 00:11:26,780
میتوانید انجام دهید این است که مانند
264
00:11:26,780 –> 00:11:28,610
یک زمانبندی کوچک، یک کلاس زمانبندی کوچک
265
00:11:28,610 –> 00:11:33,590
و در داخل کلاس زمانبندی
266
00:11:33,590 –> 00:11:36,500
من یک صف از توابع درست می کنم،
267
00:11:36,500 –> 00:11:38,390
بنابراین دک یک شی از
268
00:11:38,390 –> 00:11:40,160
ماژول مجموعه ها است، اساساً مانند یک
269
00:11:40,160 –> 00:11:42,500
شی در صف است، بنابراین
270
00:11:42,500 –> 00:11:45,500
اینها اساساً شما می دانید که توابع آماده
271
00:11:45,500 –> 00:11:48,380
برای اجرای هستند، بنابراین آنها مجموعه کمی
272
00:11:48,380 –> 00:11:51,680
از توابع دارند. در آنجا و سپس کاری که
273
00:11:51,680 –> 00:11:53,630
من انجام خواهم داد این
274
00:11:53,630 –> 00:11:56,300
است که به زودی یک متد به این چیز می دهم و به من یک
275
00:11:56,300 –> 00:12:00,800
تابع می دهیم و تنها کاری که انجام می دهد این است
276
00:12:00,800 –> 00:12:03,080
که تابع به آن صف بستگی دارد، بنابراین ما
277
00:12:03,080 –> 00:12:05,390
یک تابع put put را روی آن قرار می دهیم. در صف قرار دهید و
278
00:12:05,390 –> 00:12:08,210
سپس یک روش اجرا می نویسم و
279
00:12:08,210 –> 00:12:10,730
ی که این متد اجرا می خواهد انجام دهد این است که
280
00:12:10,730 –> 00:12:12,620
قط می نشیند در چرخش ما
281
00:12:12,620 –> 00:12:14,680
ند وای چیزی آماده برای اجرا وج
282
00:12:14,680 –> 00:12:17,780
د دارد که اساساً چی
283
00:12:17,780 –> 00:12:21,280
ی را حذف می کند. آن و
284
00:12:21,280 –> 00:12:23,630
این است مثل دلتا ایکس است
285
00:12:23,630 –> 00:12:25,820
که کل زمانبندی وجود دارد، ما
286
00:12:25,820 –> 00:12:29,390
اساساً میخواهیم بدانید
287
00:12:29,390 –> 00:12:32,090
که به زودی این تماس را داشته باشید و در این
288
00:12:32,090 –> 00:12:34,490
روش اجرا و کاری که ما در کد انجام خواهیم داد این
289
00:12:34,490 –> 00:12:36,680
است که اساساً مانند یک
290
00:12:36,680 –> 00:12:38,270
زمانبندی کوچک درست خواهیم کرد. این
291
00:12:38,270 –> 00:12:39,890
چیزی است که در پشت
292
00:12:39,890 –> 00:12:43,190
صحنه اینجا نشسته اید، می دانید که این
293
00:12:43,190 –> 00:12:47,330
شی زمانبندی زمانبندی را دارید و یک کاری که
294
00:12:47,330 –> 00:12:49,630
می توانیم با توابع اینجا انجام دهیم این است که
295
00:12:49,630 –> 00:12:53,150
اساساً آنها را برای تعامل
296
00:12:53,150 –> 00:12:55,100
با آن زمانبندی بازسازی کنیم، بنابراین
297
00:12:55,100 –> 00:12:57,350
واقعا عجیب به نظر می رسد، اما من کاری که
298
00:12:57,350 –> 00:13:01,550
انجام می دهم این است که اگر n بزرگتر از 0 باشد،
299
00:13:01,550 –> 00:13:03,740
می خواهم در حالت خوابیده چاپ کنم و
300
00:13:03,740 –> 00:13:09,530
سپس به جای حلقه زدن در اینجا،
301
00:13:09,530 –> 00:13:10,910
به برنامه زمان بندی می روم و
302
00:13:10,910 –> 00:13:15,440
اساساً می گویم به زودی با لامبدا شمارش معکوس تماس بگیرید.
303
00:13:15,440 –> 00:13:19,370
n منهای 1 وجود
304
00:13:19,370 –> 00:13:21,020
لامبدا در
305
00:13:21,020 –> 00:13:24,320
آنجا برای ایجاد یک تابع آرگومان صفر است،
306
00:13:24,320 –> 00:13:26,630
اگر به کد زمانبندی نگاه
307
00:13:26,630 –> 00:13:28,400
کنید، به این شکل فوق العاده حداقل نوشته شده است،
308
00:13:28,400 –> 00:13:30,140
جایی که شما فقط یک تابع به من می دهید
309
00:13:30,140 –> 00:13:32,330
و من فقط آن را صدا می زنم. بدون
310
00:13:32,330 –> 00:13:36,950
ar Gument مانند هر تابعی آرگومان ندارد،
311
00:13:36,950 –> 00:13:39,320
بنابراین چیزی که من در اینجا دارم این است که
312
00:13:39,320 –> 00:13:42,140
من یک تابع بدون آرگومان دارم که
313
00:13:42,140 –> 00:13:44,570
شمارش معکوس را با یک برای تعداد کاهش یافته در
314
00:13:44,570 –> 00:13:47,090
آنجا فراخوانی می کند، بنابراین من می خواهم یک
315
00:13:47,090 –> 00:13:51,040
نوع شمارش معکوس را بازنویسی
316
00:13:52,390 –> 00:13:54,410
کنم. این چه شکلی است به
317
00:13:54,410 –> 00:13:55,910
من اجازه دهید تا آنقدر سریع اجرا کنم
318
00:13:55,910 –> 00:13:59,300
فقط برای اینکه به شما نشان دهم
319
00:13:59,300 –> 00:14:00,890
چه کاری می توانم انجام دهم این است که حدس می زنم یک
320
00:14:00,890 –> 00:14:07,280
تماس برنامه ریزی شده به زودی به عنوان مثال لامبدا شمارش معکوس 5
321
00:14:07,280 –> 00:14:09,800
و سپس می توانم بگویم
322
00:14:09,800 –> 00:14:12,950
اجرای برنامه ریزی شده شما انجام خواهید داد. در واقع چیزی را پیدا کنید
323
00:14:12,950 –> 00:14:16,240
که در واقع روش شمارش معکوس اجرا می شود،
324
00:14:16,240 –> 00:14:22,700
بیایید در واقع سعی کنیم بگوییم خوب است 5
325
00:14:22,700 –> 00:14:27,740
4 3 2 خوب است، بنابراین قطعاً کار
326
00:14:27,740 –> 00:14:29,840
می کند کمی عجیب به نظر می رسد، منظورم این است
327
00:14:29,840 –> 00:14:31,610
که اساساً کاری که شما انجام می دهید این است
328
00:14:31,610 –> 00:14:33,710
که یک تابع بازگشتی را پیاده سازی می کنید
329
00:14:33,710 –> 00:14:34,750
330
00:14:34,750 –> 00:14:38,450
فراخوانی را شامل میشود، مانند زمانبندی پشتیبان،
331
00:14:38,450 –> 00:14:40,340
خوب، این نوع
332
00:14:40,340 –> 00:14:42,920
زمانبندی در پشت صحنه است، بنابراین اگر n
333
00:14:42,920 –> 00:14:45,530
بزرگتر از 0 باشد، مرحله را انجام میدهیم، این
334
00:14:45,530 –> 00:14:48,620
فراخوانی را بهزودی انجام میدهیم، کاری که میتوانیم نوع ساختاربندی مشابهی را
335
00:14:48,620 –> 00:14:50,830
برای تابع شمارش بالا انجام دهیم،
336
00:14:50,830 –> 00:14:55,100
بنابراین وا اگر این کار میکند،
337
00:14:55,100 –> 00:14:56,540
باید
338
00:14:56,540 –> 00:14:59,870
بگوییم که اگر X کمتر از توقف است،
339
00:14:59,870 –> 00:15:03,980
چاپ میکنیم و سپس باید به
340
00:15:03,980 –> 00:15:05,840
زودی با نوعی عملکرد
341
00:15:05,840 –> 00:15:08,570
که ما را به مرحله بعدی میبرد، تماس برقرار کنیم. این در واقع
342
00:15:08,570 –> 00:15:11,690
نوعی مشکل جالب
343
00:15:11,690 –> 00:15:14,090
مانند یک مشکل ساختار کد
344
00:15:14,090 –> 00:15:18,020
در مورد این
345
00:15:18,020 –> 00:15:21,980
متغیر X را ارائه می دهد.
346
00:15:21,980 –> 00:15:24,440
347
00:15:24,440 –> 00:15:26,420
348
00:15:26,420 –> 00:15:29,530
349
00:15:29,530 –> 00:15:31,730
چند راه مختلف وجود دارد که
350
00:15:31,730 –> 00:15:33,740
میتوانید آن را انجام دهید، یکی این است که میتوانید آن را به عنوان یک
351
00:15:33,740 –> 00:15:34,410
352
00:15:34,410 –> 00:15:39,329
آرگومان پیشفرض تبدیل کنید نه فوقالعاده راضیکننده، و اجازه دهید
353
00:15:39,329 –> 00:15:41,220
برای یک ثانیه با آن رول کنیم، بنابراین منظورم این است که
354
00:15:41,220 –> 00:15:46,560
میتوانید آن را بهعنوان یک آرگومان پیشفرض درآورید و
355
00:15:46,560 –> 00:15:49,290
سپس یک فراخوانی بازگشتی انجام دهید.
356
00:15:49,290 –> 00:15:51,449
شما آرگومان را افزایش می دهید که ممکن است
357
00:15:51,449 –> 00:15:54,389
یکی از راه های انجام این کار باشد.
358
00:15:54,389 –> 00:15:56,009
359
00:15:56,009 –> 00:15:58,019
360
00:15:58,019 –> 00:16:03,509
361
00:16:03,509 –> 00:16:06,329
362
00:16:06,329 –> 00:16:11,490
p پنج مانند آن و سپس
363
00:16:11,490 –> 00:16:14,009
زمانبندی اجرا میشود، اگر درست کار میکند
364
00:16:14,009 –> 00:16:16,769
، به نوعی میبینید که این چیزها بهطور
365
00:16:16,769 –> 00:16:19,259
متناوب و
366
00:16:19,259 –> 00:16:23,120
در حال پیشرفت هستند، آنها از طریق کدشان پیشرفت میکنند
367
00:16:23,120 –> 00:16:28,589
، بیایید آن را امتحان کنیم تا شما
368
00:16:28,589 –> 00:16:30,240
ببینید آنها در حال اجرا هستند. آه،
369
00:16:30,240 –> 00:16:32,850
من از نام تابع اشتباه استفاده می کنم، بخش،
370
00:16:32,850 –> 00:16:37,139
ببخشید، بله، بسیار خوب، توقف X به اضافه
371
00:16:37,139 –> 00:16:40,550
یک، بیایید دوباره تلاش کنیم
372
00:16:42,500 –> 00:16:44,759
که در طول این جلسه برخی از خطاها را ببینیم،
373
00:16:44,759 –> 00:16:46,949
منظورم این است که نوعی کدنویسی زنده
374
00:16:46,949 –> 00:16:48,600
احتمالاً اشتباهاتی را انجام می دهد، من نمی
375
00:16:48,600 –> 00:16:50,899
خواهم. نمیخواهم آنها را ویرایش کنم، بنابراین
376
00:16:50,899 –> 00:16:53,100
منظورم این است که اشتباه را برطرف میکنم، اما
377
00:16:53,100 –> 00:16:55,829
ضبط را ویرایش نمیکنم، بنابراین اکنون
378
00:16:55,829 –> 00:16:57,089
میبینید که چیزی بهنوعی
379
00:16:57,089 –> 00:17:01,319
متناوب است و دوباره چیزی که این
380
00:17:01,319 –> 00:17:04,049
کار را انجام میدهد این است که من عملکردها را بازسازی کردهام.
381
00:17:04,049 –> 00:17:07,799
به طوری که آنها اساساً همیشه
382
00:17:07,799 –> 00:17:09,869
فقط برمی گردند منظورم این است که مانند ایده یک
383
00:17:09,869 –> 00:17:11,520
تابع این است که کاری انجام می دهد و
384
00:17:11,520 –> 00:17:14,909
سپس بلافاصله از
385
00:17:14,909 –> 00:17:16,799
تابع برمی گردد، اما وقتی از
386
00:17:16,799 –> 00:17:19,679
تابع برمی گردد ممکن است به نوعی مانند مرحله بعدی محاسبه برنامه ریزی کند.
387
00:17:19,679 –> 00:17:21,959
n
388
00:17:21,959 –> 00:17:24,089
میگوید خوب میدانی دفعه بعد که
389
00:17:24,089 –> 00:17:26,329
میدانی میدانی میخواهم کاری انجام دهم
390
00:17:26,329 –> 00:17:29,070
که میدانی با خودم تماس بگیر مثل
391
00:17:29,070 –> 00:17:30,840
یک کاهش استدلال یا
392
00:17:30,840 –> 00:17:34,080
چیز دیگری که به طور مؤثری
393
00:17:34,080 –> 00:17:36,809
شبیه حلقه while باشد. این یک
394
00:17:36,809 –> 00:17:38,429
نوع خنده دار حلقه while است، فقط این است
395
00:17:38,429 –> 00:17:41,190
که حلقه کردن
396
00:17:41,190 –> 00:17:44,299
با این نوع برنامه زمانبندی پشتیبان هماهنگ شده است،
397
00:17:44,299 –> 00:17:47,370
اگر از هک آرگومان پیش فرض خوشتان نمی آید
398
00:17:47,370 –> 00:17:47,880
399
00:17:47,880 –> 00:17:52,049
، یکی از راه های رفع آن این است که
400
00:17:52,049 –> 00:17:55,080
شاید مانند من بنویسید. مانند یک
401
00:17:55,080 –> 00:17:59,660
تابع داخلی از نوعی مانند شما می
402
00:17:59,900 –> 00:18:02,789
دانید مانند یک تابع اجرا که در آن شما
403
00:18:02,789 –> 00:18:05,010
مانند X به عنوان آرگومان مشابه آن را وارد می کنید
404
00:18:05,010 –> 00:18:09,929
و سپس کد خود را می گیرید و به
405
00:18:09,929 –> 00:18:14,460
نوعی آن را در داخل این تابع قرار می دهید،
406
00:18:14,460 –> 00:18:16,200
بنابراین آرگومان را پاس می کنید. و سپس
407
00:18:16,200 –> 00:18:18,390
شما اساساً آن را اجرا می کنید، همانطور که
408
00:18:18,390 –> 00:18:20,700
پایه می گذارید، می گویید خوب، خوب، اوکی،
409
00:18:20,700 –> 00:18:27,419
آن را فراخوانی کنید، به صورت بازگشتی رون را مانند آن صدا کنید
410
00:18:27,419 –> 00:18:29,309
و سپس در داخل تابع خود
411
00:18:29,309 –> 00:18:31,559
، آن را با رون صفر شروع
412
00:18:31,559 –> 00:18:33,210
می کنید، فکر می کنم آن اراده مناسب است که
413
00:18:33,210 –> 00:18:35,580
حل می شود که مشکل em اگر چه میدانید که
414
00:18:35,580 –> 00:18:37,200
با اتخاذ این رویکرد، به نوعی مانند
415
00:18:37,200 –> 00:18:40,950
امنیت شغلی شما است که
416
00:18:40,950 –> 00:18:42,539
ممکن است کمی بالا رود و یک
417
00:18:42,539 –> 00:18:44,190
تابع تودرتو داشته باشد و سپس شما میدانید
418
00:18:44,190 –> 00:18:47,220
419
00:18:47,220 –> 00:18:49,039
که تابع تودرتو را فراخوانی میکند که یک راه
420
00:18:49,039 –> 00:18:52,530
جایگزین روش جایگزین است. انجام آن خوب است، بنابراین
421
00:18:52,530 –> 00:18:54,150
این دادن به شما
422
00:18:54,150 –> 00:18:56,460
شروع یکی از این چارچوب ها را می دهد،
423
00:18:56,460 –> 00:18:58,950
اساساً می توانید بدانید که آیا
424
00:18:58,950 –> 00:19:00,179
می خواهید همزمان و دوباره بدون
425
00:19:00,179 –> 00:19:04,289
رشته انجام دهید، یکی از راه های انجام این کار این است که این
426
00:19:04,289 –> 00:19:07,200
نوع ایده زمان بندی عملکرد را انجام دهید. هر
427
00:19:07,200 –> 00:19:08,820
تابعی به نوعی به پایان می رسد
428
00:19:08,820 –> 00:19:11,130
و این گزینه را دارد که
429
00:19:11,130 –> 00:19:14,640
یک فراخوانی دیگر را بعداً برنامه ریزی کند،
430
00:19:14,640 –> 00:19:19,559
به عنوان یک پیچ اضافی در این مورد، من می خواهم
431
00:19:19,559 –> 00:19:22,140
در مورد این تابع زمان خواب برای
432
00:19:22,140 –> 00:19:25,830
یک ثانیه صحبت کنم.
433
00:19:25,830 –> 00:19:28,260
که در کد و معلوم می شود
434
00:19:28,260 –> 00:19:30,360
که خواب یک
435
00:19:30,360 –> 00:19:33,960
مشکل جالب در اینجا ارائه می دهد، مثلاً
436
00:19:33,960 –> 00:19:37,289
اگر این خواب اول به
437
00:19:37,289 –> 00:19:39,929
خواب مانند برای مانند تغییر می کرد، بنابراین شمارش معکوس اساساً
438
00:19:39,929 –> 00:19:42,120
برای چند ثانیه می خوابد. بین هر
439
00:19:42,120 –> 00:19:46,380
ضربه و شمارش بالا،
440
00:19:46,380 –> 00:19:50,280
بین هر مرحله یک ثانیه می خوابد، خوب، شما به نوعی می
441
00:19:50,280 –> 00:19:53,220
بینید که آنجا چه خبر است، یک
442
00:19:53,220 –> 00:19:56,040
سوال این است که انتظار دارید
443
00:19:56,040 –> 00:19:59,010
خروجی از آن چه باشد یا
444
00:19:59,010 –> 00:20:01,789
اگر من می خواستم خروجی آن چقدر باشد.
445
00:20:01,789 –> 00:20:05,539
اجرا کنید که همین الان چیزی که میخواهید
446
00:20:05,539 –> 00:20:07,519
ببینید این است که پنج تا پایین میآید و
447
00:20:07,519 –> 00:20:09,859
چهار ثانیه
448
00:20:09,859 –> 00:20:13,159
449
00:20:13,159 –> 00:20:18,580
450
00:20:18,580 –> 00:20:21,669
همانجا مینشیند.
451
00:20:21,669 –> 00:20:25,190
اساساً همه چیزهای دیگر را برای
452
00:20:25,190 –> 00:20:27,590
پیشرفت خوب مسدود می کند، بنابراین آن
453
00:20:27,590 –> 00:20:29,479
زمان خواب اساساً شبیه به
454
00:20:29,479 –> 00:20:33,200
یک تماس مسدود کننده است و هیچ چیز دیگری
455
00:20:33,200 –> 00:20:34,879
نمی تواند در زمانی که
456
00:20:34,879 –> 00:20:40,519
خواب است اتفاق بیفتد زیرا مانند این است که می
457
00:20:40,519 –> 00:20:42,139
دانید زمان بندی به نوعی منجمد شده است و
458
00:20:42,139 –> 00:20:45,470
بنابراین، اگر این چیزی است که می خواهید
459
00:20:45,470 –> 00:20:48,919
آن را اصلاح کنید،
460
00:20:48,919 –> 00:20:51,950
باید به روشی فکر کنید تا
461
00:20:51,950 –> 00:20:54,349
آن زمان خواب را انجام ندهید، اما می دانید که باید
462
00:20:54,349 –> 00:20:57,159
463
00:20:57,159 –> 00:21:01,909
یک رویکرد جایگزین ابدیت و یک راه ممکن را پیدا کنید.
464
00:21:01,909 –> 00:21:04,759
برای انجام این کار خوب است، بنابراین فرض کنید نمیخواستید این کار
465
00:21:04,759 –> 00:21:07,009
را انجام دهید و زمان خواب را نمیخواهید،
466
00:21:07,009 –> 00:21:10,820
یکی از راههای انجام آن این است که شاید
467
00:21:10,820 –> 00:21:12,950
آن عملکرد را در یک زمانبندی قرار دهید، مثلاً
468
00:21:12,950 –> 00:21:14,419
میتوانید روشی مانند
469
00:21:14,419 –> 00:21:17,720
تماس بعداً در آنجا پیدا کنید. آن را مانند یک
470
00:21:17,720 –> 00:21:25,009
تاخیر زمانی قرار دهید تا کد خود را تغییر دهید در جایی
471
00:21:25,009 –> 00:21:27,289
که درست است بعداً مثلاً چهار ثانیه
472
00:21:27,289 –> 00:21:29,239
از این به
473
00:21:29,239 –> 00:21:32,389
بعد
474
00:21:32,389 –> 00:21:34,639
475
00:21:34,639 –> 00:21:39,289
تماس بگیرید. روش اجرا که
476
00:21:39,289 –> 00:21:41,269
اساساً مانند
477
00:21:41,269 –> 00:21:43,820
مدیریت زمان و قرار دادن آن در
478
00:21:43,820 –> 00:21:45,289
زمانبندی است و این چیزی است که
479
00:21:45,289 –> 00:21:47,299
اکثر اینها میدانید که در نهایت
480
00:21:47,299 –> 00:21:49,580
همه این چارچوبهای ناهمگام معمولاً
481
00:21:49,580 –> 00:21:52,369
باید با آن سروکار داشته باشند، مفهومی از
482
00:21:52,369 –> 00:21:53,899
مدیریت زمان است. مانند یک
483
00:21:53,899 –> 00:21:56,720
تابع تماس بعد که در آن
484
00:21:56,720 –> 00:22:00,080
تاخیر دارید و برخی عملکردها را
485
00:22:00,080 –> 00:22:03,820
می شناسید و سپس باید مدیریت آن تاخیر را سازماندهی یا
486
00:22:03,820 –> 00:22:06,710
هماهنگ
487
00:22:06,710 –> 00:22:09,409
کنید، در اینجا
488
00:22:09,409 –> 00:22:11,779
نحوه مدیریت آن اساسا برای
489
00:22:11,779 –> 00:22:14,450
مدیریت تأخیر ممکن است فهرست جداگانه ای داشته باشید،
490
00:22:14,450 –> 00:22:17,510
من یک نوع عملکرد خواب دارم، اگر
491
00:22:17,510 –> 00:22:19,370
شما خوب هستید، بنابراین عملکردهای خواب خود
492
00:22:19,370 –> 00:22:22,580
را دارید و کاری که برای
493
00:22:22,580 –> 00:22:24,740
مدیریت عملکردهای خواب انجام
494
00:22:24,740 –> 00:22:26,840
می دهید این است که به نوعی مانند یک ضرب الاجل تعیین
495
00:22:26,840 –> 00:22:28,310
می کنید که می گویید خوب است. خوب
496
00:22:28,310 –> 00:22:30,860
آخرین مهلت برای این تماس بعداً
497
00:22:30,860 –> 00:22:36,170
زمان فعلی به اضافه تاخیر خواهد بود،
498
00:22:36,170 –> 00:22:38,300
این چیزی شبیه به زمان انقضا است که
499
00:22:38,300 –> 00:22:41,180
اساساً به نوعی می گویید خوب است یا
500
00:22:41,180 –> 00:22:44,150
چند ثانیه دیگر زمانی است که این
501
00:22:44,150 –> 00:22:48,560
تابع باید فراخوانی شود و سپس شما
502
00:22:48,560 –> 00:22:52,400
انجام این کار این است که اساساً آن
503
00:22:52,400 –> 00:22:54,890
مهلت را همراه با آن تابع
504
00:22:54,890 –> 00:22:56,360
در صف خواب قرار دهید، بنابراین
505
00:22:56,360 –> 00:22:58,070
شما می خواهید ضبط کنید مانند یک
506
00:22:58,070 –> 00:23:00,050
رکورد به نوعی می گویید خوب است که این
507
00:23:00,050 –> 00:23:06,290
تابع چه زمانی بیدار می شود و سپس می
508
00:23:06,290 –> 00:23:07,190
دانید که چه زمانی آن را انجام می دهید. بدانید که
509
00:23:07,190 –> 00:23:08,690
اساساً چه زمانی است که مهلت آن چقدر است
510
00:23:08,690 –> 00:23:10,100
و چه زمانی قرار است خوب از خواب بیدار شود،
511
00:23:10,100 –> 00:23:11,900
بنابراین شما می خواهید
512
00:23:11,900 –> 00:23:16,070
آن را آنجا بگذارید و سپس
513
00:23:16,070 –> 00:23:19,250
در روش اجرا باید چه کاری انجام دهید.
514
00:23:19,250 –> 00:23:21,050
شما نیاز دارید اساساً نوعی
515
00:23:21,050 –> 00:23:24,740
هماهنگی با آن
516
00:23:24,740 –> 00:23:27,440
پیچ خواب داشته باشید، بنابراین اگر
517
00:23:27,440 –> 00:23:31,040
چیزی آماده برای اجرا داشتید، اگر چیزی آماده ندارید بلافاصله
518
00:23:31,040 –> 00:23:33,680
آن را اجرا
519
00:23:33,680 –> 00:23:34,670
520
00:23:34,670 –> 00:23:38,750
521
00:23:38,750 –> 00:23:40,010
می کنید. باید
522
00:23:40,010 –> 00:23:44,210
بخوابید تا هیچ کس
523
00:23:44,210 –> 00:23:45,770
این را بازسازی نکند کمی مشکلی ندارد، بنابراین در حالی که
524
00:23:45,770 –> 00:23:47,510
چیزی آماده است یا چیزی در
525
00:23:47,510 –> 00:23:51,470
حال خواب است، اگر چیزی برای اجرا آماده نیست،
526
00:23:51,470 –> 00:23:54,170
آنچه باید انجام دهید این است که
527
00:23:54,170 –> 00:23:59,470
اساساً نزدیکترین ضرب الاجل را پیدا
528
00:23:59,590 –> 00:24:01,520
کنید، بنابراین شما می خواهید خود را انجام دهید.
529
00:24:01,520 –> 00:24:05,650
نزدیکترین مهلت را پیدا میکنم، یکی از راههای انجام
530
00:24:05,650 –> 00:24:08,900
این کار، ذخیره مهلتها به
531
00:24:08,900 –> 00:24:11,720
نوعی ترتیب مرتبسازی شده است، من
532
00:24:11,720 –> 00:24:13,700
در یک ثانیه راهحل بهتری برای این موضوع به شما خواهم داد، اما
533
00:24:13,700 –> 00:24:16,040
یکی از راههایی که ممکن است انجام دهید این است که شما
534
00:24:16,040 –> 00:24:20,210
ممکن است دوست داشته باشید مرتبسازی کنید. من یک جورهایی نزدیکترین
535
00:24:20,210 –> 00:24:25,130
مهلت را دارم و بنابراین شما
536
00:24:25,130 –> 00:24:26,570
وارد اینجا میشوید و میگویید مهلتهای بسیار خوب
537
00:24:26,570 –> 00:24:28,300
برابر است با
538
00:24:28,300 –> 00:24:35,950
صفر صفر یا چیزی شبیه به خود خوابیدن و سپس
539
00:24:35,950 –> 00:24:38,080
متوجه میشوید که
540
00:24:38,080 –> 00:24:44,710
بین الان و سررسید چند ثانیه است. d
541
00:24:44,710 –> 00:24:46,300
سپس اگر دلتا بزرگتر از
542
00:24:46,300 –> 00:24:49,510
صفر بود، ما خوب می خوابیدیم، بنابراین چه
543
00:24:49,510 –> 00:24:50,500
اتفاقی می افتد این است که شما
544
00:24:50,500 –> 00:24:51,610
می خواهید، شما اساساً به
545
00:24:51,610 –> 00:24:53,380
آن ضرب الاجل نگاه می کنید، بنابراین من فکر می
546
00:24:53,380 –> 00:24:55,720
کنم مهلت بعدی چیست؟ برای
547
00:24:55,720 –> 00:25:01,900
مدت طولانی بخوابم و بعد از اتمام
548
00:25:01,900 –> 00:25:03,190
کار، تابع را در قسمت
549
00:25:03,190 –> 00:25:11,800
آماده قرار می دهم و سپس
550
00:25:11,800 –> 00:25:13,570
توابع آماده را اجرا می کند، بنابراین ما می
551
00:25:13,570 –> 00:25:15,580
خواهیم برنامه زمان بندی برنامه ریزی شده را در
552
00:25:15,580 –> 00:25:17,410
اصل مانند یک اضافه کنیم. کمی
553
00:25:17,410 –> 00:25:20,230
مانند مدیریت زمان در آن جایی که ما
554
00:25:20,230 –> 00:25:22,390
به دنبال ضربالاجل بعدی
555
00:25:22,390 –> 00:25:27,160
هستیم، آن را خاموش میکنیم
556
00:25:27,160 –> 00:25:29,050
تا مدت زمان مشخصی عملکرد را در قسمت آماده
557
00:25:29,050 –> 00:25:31,630
قرار دهیم و سپس تا زمانی
558
00:25:31,630 –> 00:25:34,330
که هنوز میتوانیم در آنجا هستیم، موارد را اجرا کنیم. بنابراین یک
559
00:25:34,330 –> 00:25:37,300
تغییر کوچک در آنجا
560
00:25:37,300 –> 00:25:41,230
اتفاقی که با این کد میافتد این است که
561
00:25:41,230 –> 00:25:43,930
اساساً توالی زمانی
562
00:25:43,930 –> 00:25:46,270
563
00:25:46,270 –> 00:25:48,460
564
00:25:48,460 –> 00:25:51,550
مناسب را خواهید دید. بالا بالا
565
00:25:51,550 –> 00:25:55,300
و سپس پایین بالا بالا بالا بالا پایین بالا می
566
00:25:55,300 –> 00:25:56,800
دانید ب چون اساساً روند بالا
567
00:25:56,800 –> 00:26:02,560
بسیار سریعتر از پایین اجرا می شود، اجازه دهید
568
00:26:02,560 –> 00:26:04,240
من فقط چند آرگومان مختلف را در
569
00:26:04,240 –> 00:26:07,600
اینجا قرار دهم و آن را امتحان کنم، پس بیایید این کار را انجام
570
00:26:07,600 –> 00:26:10,720
دهیم، بنابراین اکنون
571
00:26:10,720 –> 00:26:12,760
شما پایین پنج را می بینید و مانند بالا یک دو
572
00:26:12,760 –> 00:26:16,650
سه چهار مانند بالا است. صفر یک دو سه
573
00:26:17,490 –> 00:26:20,020
دقیقاً همان رفتاری است که ما می خواهیم.
574
00:26:20,020 –> 00:26:22,180
منظورم این است که اساساً پایین آمدن
575
00:26:22,180 –> 00:26:25,720
بسیار کندتر از بالا بود و اکنون ما در
576
00:26:25,720 –> 00:26:29,620
حال دریافت آن هستیم، بنابراین این در واقع
577
00:26:29,620 –> 00:26:31,120
به شما یک نوع رفتاری می دهد که در واقع می دانید در
578
00:26:31,120 –> 00:26:33,370
واقع یک قطعه اصلی از برخی از این
579
00:26:33,370 –> 00:26:35,470
چارچوبهای همگام این است که شما نه
580
00:26:35,470 –> 00:26:37,900
تنها میدانید که آنها
581
00:26:37,900 –> 00:26:40,240
ایده برنامهریزی مشابه عملکردها را میدانند،
582
00:26:40,240 –> 00:26:41,980
بلکه ممکن است مجبور باشند کارهایی مانند
583
00:26:41,980 –> 00:26:45,790
مدیریت و تأخیرها را انجام دهند و
584
00:26:45,790 –> 00:26:48,850
سایر موارد دیگر را در اینجا میدانید، بنابراین خیلی خوب است.
585
00:26:48,850 –> 00:26:51,220
شما نوع دیگری از شما را
586
00:26:51,220 –> 00:26:52,929
میدانید چیز دیگری را میدانید که اتفاقاً میخواهید یک
587
00:26:52,929 –> 00:26:55,809
جزئیات پیادهسازی معمولی را پیدا کنید این
588
00:26:55,809 –> 00:26:58,740
است که اگر میخواهید
589
00:26:58,740 –> 00:27:03,070
کارها را بر اساس ضربالاجل مرتب کنید،
590
00:27:03,070 –> 00:27:04,870
اساساً چیزی را ایجاد میکنید که به عنوان اولویت شناخته میشود.
591
00:27:04,870 –> 00:27:09,669
y queue شما چیزهایی را وارد می کنید
592
00:27:09,669 –> 00:27:11,470
که در آن اولویت اساساً جایی
593
00:27:11,470 –> 00:27:13,780
است که مهلت بعدی است، یک
594
00:27:13,780 –> 00:27:16,090
ماژول پایتون برای انجام صف های اولویت وجود دارد که
595
00:27:16,090 –> 00:27:18,910
ماژول صف هیپ است که ممکن است
596
00:27:18,910 –> 00:27:23,230
کمی مبهم باشد، اما کاری که ممکن است انجام دهید این
597
00:27:23,230 –> 00:27:27,580
است که صف هیپ را انجام دهید. مانند
598
00:27:27,580 –> 00:27:33,190
عملکرد ضربالاجل خواب خود را فشار
599
00:27:33,190 –> 00:27:37,120
میدهد که اساساً
600
00:27:37,120 –> 00:27:39,640
دادهها را در آن فهرست قرار میدهد، اما آنها
601
00:27:39,640 –> 00:27:42,150
را به ترتیبی حفظ میکند که اساساً
602
00:27:42,150 –> 00:27:46,030
با ضربالاجلها در آنجا اولویتبندی میشود و سپس
603
00:27:46,030 –> 00:27:47,980
وقتی بهجای حذف اولین
604
00:27:47,980 –> 00:27:50,350
چیزی که در آنجا ظاهر میشود، فکر میکنم میتوانید صف گرما را انجام دهید.
605
00:27:50,350 –> 00:27:56,350
این مانند یک دیگ حرارتی است که
606
00:27:56,350 –> 00:27:58,090
به نوعی شما را از
607
00:27:58,090 –> 00:27:59,830
مشکل انجام مرتب سازی و موارد
608
00:27:59,830 –> 00:28:02,290
دیگر نجات می دهد، همچنین استفاده از یک پشته
609
00:28:02,290 –> 00:28:04,059
یا صف اولویت بسیار
610
00:28:04,059 –> 00:28:06,610
کارآمدتر از تکنیکی است که من
611
00:28:06,610 –> 00:28:09,100
قبلاً انجام می دادم. این
612
00:28:09,100 –> 00:28:10,780
واقعاً کارآمد نیست که هر بار که چیزی را در آنجا وارد می کنم مجبور به مرتب کردن
613
00:28:10,780 –> 00:28:13,270
کل لیست عملکردهای خوابیدن در خواب
614
00:28:13,270 –> 00:28:15,100
شوم
615
00:28:15,100 –> 00:28:18,010
، بنابراین
616
00:28:18,010 –> 00:28:19,809
شما می دانید که تکنیک استاندارد بسیار خوبی است. برای دیدن
617
00:28:19,809 –> 00:28:23,500
ماژول صف پشته ای که به درستی استفاده می شود و
618
00:28:23,500 –> 00:28:25,240
دوباره این نوع رفتار خواب
619
00:28:25,240 –> 00:28:29,250
را داریم که در اینجا وجود دارد،
620
00:28:36,190 –> 00:28:39,920
یک نکته فنی دیگر با این
621
00:28:39,920 –> 00:28:42,110
که مشخص می شود
622
00:28:42,110 –> 00:28:45,590
موارد گوشه ای وجود دارد که باید نگران یک
623
00:28:45,590 –> 00:28:49,460
مورد گوشه ای مربوط به ترتیب دادن آنها بود. دو
624
00:28:49,460 –> 00:28:50,810
تابع مختلف با
625
00:28:50,810 –> 00:28:53,000
ضرب الاجل یکسان مانند فرض کنید شما دو
626
00:28:53,000 –> 00:28:54,470
تابع مختلف داشتید مانند فرض
627
00:28:54,470 –> 00:28:57,470
کنید یک تابع f و یک تابع G D
628
00:28:57,470 –> 00:29:02,120
داشتید و سپس فرض کنید که شما یک
629
00:29:02,120 –> 00:29:04,940
لیست خواب شبیه به این داشته اید مانند خوب خوابیدن
630
00:29:04,940 –> 00:29:09,200
برابر است با 2 F و سپس یکی دیگر
631
00:29:09,200 –> 00:29:13,910
مانند 2 G مانند این است که مانند همان
632
00:29:13,910 –> 00:29:17,150
مهلت برای عملکرد است، معلوم می شود
633
00:29:17,150 –> 00:29:19,880
که با سفارش دادن مشکلاتی ایجاد می کند،
634
00:29:19,880 –> 00:29:23,480
مانند اگر سعی کنید مرتب
635
00:29:23,480 –> 00:29:27,020
سازی کنید که متوجه خواهید شد که خراب می شود
636
00:29:27,020 –> 00:29:30,410
زیرا نمی توانید مانند کمتر انجام دهید. از
637
00:29:30,410 –> 00:29:31,850
یا بیشتر از مقایسه بین
638
00:29:31,850 –> 00:29:34,310
توابع در حال حاضر این در واقع یک
639
00:29:34,310 –> 00:29:37,520
مورد گوشه ای بسیار جالب
640
00:29:37,520 –> 00:29:41,750
است، از نظر فنی ممکن است که
641
00:29:41,750 –> 00:29:44,060
شما دو عملکرد متفاوت داشته باشید که
642
00:29:44,060 –> 00:29:47,840
با sa برنامه ریزی شوند. من مهلت
643
00:29:47,840 –> 00:29:49,940
ممکن است به ندرت اتفاق بیفتد ممکن است تقریباً هرگز
644
00:29:49,940 –> 00:29:52,760
اتفاق نیفتد، اما مثل هرازگاهی میتوانید
645
00:29:52,760 –> 00:29:54,050
دو عملکرد را با یک
646
00:29:54,050 –> 00:29:56,480
مهلت دریافت کنید و ناگهان
647
00:29:56,480 –> 00:29:59,810
برنامههای شما با این خطا خراب میشوند که
648
00:29:59,810 –> 00:30:01,840
اساساً میگوید نمیتوانید مقایسه انجام دهید.
649
00:30:01,840 –> 00:30:04,400
بین تابع و تابع
650
00:30:04,400 –> 00:30:06,920
چون من ضرب الاجل یکسانی دارم
651
00:30:06,920 –> 00:30:09,650
و نمیتوانند نمیتوانند مقایسه کنند
652
00:30:09,650 –> 00:30:14,210
که برای اشکالزدایی بسیار آزاردهنده
653
00:30:14,210 –> 00:30:16,520
است، زیرا به ندرت اتفاق میافتد،
654
00:30:16,520 –> 00:30:19,910
بنابراین یک نوع تغییر کوچک اضافی
655
00:30:19,910 –> 00:30:21,980
که در این پیادهسازیها مشاهده میکنید این
656
00:30:21,980 –> 00:30:24,800
است که آنها اغلب
657
00:30:24,800 –> 00:30:28,960
یک شماره دنباله مانند یک
658
00:30:29,680 –> 00:30:32,660
شماره دنباله در حال افزایش را وارد
659
00:30:32,660 –> 00:30:35,540
میکنند و کاری که آنها انجام میدهند این است که شماره دنباله را بهروزرسانی میکنند،
660
00:30:35,540 –> 00:30:37,580
بنابراین دنباله به اضافه
661
00:30:37,580 –> 00:30:39,560
برابر یک و سپس
662
00:30:39,560 –> 00:30:44,570
شماره دنباله را در نوعی
663
00:30:44,570 –> 00:30:46,520
صف اولویت است، بنابراین آنها
664
00:30:46,520 –> 00:30:48,310
میگویند در این مهلت و
665
00:30:48,310 –> 00:30:50,770
شماره کوین با این تابع تماس میگیرد،
666
00:30:50,770 –> 00:30:53,740
ایده شماره دنباله این است که
667
00:30:53,740 –> 00:30:57,370
مانند زمانی که دو تابع داشتند، تساوی را انجام دهند.
668
00:30:57,370 –> 00:31:00,160
همان مهلت شماره دنباله
669
00:31:00,160 –> 00:31:05,230
اساساً پیوند را قطع میکند و از
670
00:31:05,230 –> 00:31:06,370
این نوع مقایسه بین
671
00:31:06,370 –> 00:31:08,920
توابع اجتناب میکند، به طوری که
672
00:31:08,920 –> 00:31:10,590
تکنیکی را انجام میدهد که گاهی اوقات شما نیز میبینید
673
00:31:10,590 –> 00:31:13,750
و در واقع شما میدانید که نمونهای از
674
00:31:13,750 –> 00:31:15,190
این موارد است که بسیاری از آنها را میدانید. این
675
00:31:15,190 –> 00:31:17,650
کتابخانهها تعدادی
676
00:31:17,650 –> 00:31:20,560
از موارد گوشهای پیچیده وجود دارند که
677
00:31:20,560 –> 00:31:22,630
شما باید نگران آن
678
00:31:22,630 –> 00:31:29,020
باشید که یکی از آنها باشد،
679
00:31:29,020 –> 00:31:30,810
بنابراین همانطور که میدانید بررسی سریع
680
00:31:30,810 –> 00:31:33,760
ما این زمانبندی را داریم.
681
00:31:33,760 –> 00:31:36,550
اساساً اجرای توابع یکی
682
00:31:36,550 –> 00:31:38,230
پس از دیگری خوب است، بنابراین فقط
683
00:31:38,230 –> 00:31:40,420
اجرای این توابع مانند توابع آرگومان صفر،
684
00:31:40,420 –> 00:31:43,090
علاوه بر این، این
685
00:31:43,090 –> 00:31:46,450
پشتیبانی را برای خواب دارد و سپس اگر
686
00:31:46,450 –> 00:31:48,100
میخواهید اگر میخواهید همزمان انجام دهید،
687
00:31:48,100 –> 00:31:50,290
باید اساساً با آن
688
00:31:50,290 –> 00:31:52,330
زمانبندی تعامل داشته باشید تا بدانید
689
00:31:52,330 –> 00:31:55,330
شمارش معکوس و تابع شمارش رو به بالا، این
690
00:31:55,330 –> 00:31:58,720
توابع هیچ نوع حلقه
691
00:31:58,720 –> 00:32:00,160
یا هر چیز دیگری را انجام نمی دهند، درست مثل اینکه در
692
00:32:00,160 –> 00:32:03,820
اصل اجرا می شوند و بلافاصله
693
00:32:03,820 –> 00:32:06,840
با برنامه ریزی محاسبه های بعدی به پایان می رسند.
694
00:32:06,840 –> 00:32:09,460
آن را طوری نگه دارید که در اینجا هیچ چیز مانند
695
00:32:09,460 –> 00:32:11,380
بلوک ها یا هر چیز دیگری وجود نداشته باشد، فقط اگر F و
696
00:32:11,380 –> 00:32:13,150
بزرگتر از یک به خوبی صفر را چاپ کنید یا
697
00:32:13,150 –> 00:32:15,550
آن را در انتهای پایین چاپ کنید و سپس
698
00:32:15,550 –> 00:32:17,140
بلافاصله مانند یک
699
00:32:17,140 –> 00:32:20,140
عملیات بعدی و همان چیزی را برای شمارش به
700
00:32:20,140 –> 00:32:23,550
بالا برنامه ریزی می کنیم و این همان ساختار است. فقط
701
00:32:23,550 –> 00:32:25,780
بلافاصله از تابع
702
00:32:25,780 –> 00:32:29,050
برمیگردیم و چیزی را زمانبندی میکنیم که به شما
703
00:32:29,050 –> 00:32:34,540
امکان میدهد در اینجا به نوعی هماهنگی داشته باشید،
704
00:32:34,540 –> 00:32:36,400
این کار را انجام میدهیم زیرا سعی میکنیم این کار را
705
00:32:36,400 –> 00:32:40,260
انجام ندهیم تا برنامه رشته را به درستی انجام ندهیم،
706
00:32:46,750 –> 00:32:50,150
بنابراین این یک
707
00:32:50,150 –> 00:32:53,380
نقطه شروع است که اکنون با استفاده از آن استفاده میکنیم. این به عنوان یک مدل
708
00:32:53,380 –> 00:32:57,470
ممکن است انواع
709
00:32:57,470 –> 00:32:59,960
مشکلات دیگری را انجام داد، یک مشکلی که میخواستم به آن
710
00:32:59,960 –> 00:33:02,090
نگاه کنم، خوب، بنابراین اجازه دهید
711
00:33:02,090 –> 00:33:02,900
یک لحظه
712
00:33:02,900 –> 00:33:06,590
یک مشکل همزمانی بسیار کلاسیک را کنار بگذاریم،
713
00:33:06,590 –> 00:33:08,740
چیزی است که به عنوان
714
00:33:08,740 –> 00:33:13,160
مشکل تولیدکننده/مصرفکننده شناخته میشود و اجازه دهید من بگویم.
715
00:33:13,160 –> 00:33:14,530
شما نوعی از این سناریو در یک
716
00:33:14,530 –> 00:33:16,100
تولید کننده-مصرف کننده براون این
717
00:33:16,100 –> 00:33:18,200
اساساً یک مشکل است که معمولاً
718
00:33:18,200 –> 00:33:21,200
شامل صف ها
719
00:33:21,200 –> 00:33:25,970
720
00:33:25,970 –> 00:33:29,809
می شود. یک سری
721
00:33:29,809 –> 00:33:33,040
حلقه را می شناسید و شاید
722
00:33:33,040 –> 00:33:35,420
چیزها را به یک صف
723
00:33:35,420 –> 00:33:36,860
بکشید، فکر می کنم اسمش را بگذارم فقط صف در آنجا باشه، بنابراین
724
00:33:36,860 –> 00:33:38,480
کاری که انجام می دهید این است که می خواهید
725
00:33:38,480 –> 00:33:42,110
چیزی شبیه تولید بگویید و
726
00:33:42,110 –> 00:33:44,660
چیزی را در یک صف قرار دهید
727
00:33:44,660 –> 00:33:47,420
خوب است، بنابراین شما در حال تولید یک سری
728
00:33:47,420 –> 00:33:51,110
داده هستید، شاید مانند یک راهبه
729
00:33:51,110 –> 00:33:53,960
در صف قرار دهید، این یک
730
00:33:53,960 –> 00:33:58,460
مقدار نگهبان است یا نوعی خاموش کردن را انجام دهید
731
00:33:58,460 –> 00:34:01,250
و سپس یک مصرف کننده خواهید داشت
732
00:34:01,250 –> 00:34:03,620
که به نوعی این داده ها را انتخاب می کند.
733
00:34:03,620 –> 00:34:05,660
کد مصرف کننده چگونه به نظر می رسد این است که
734
00:34:05,660 –> 00:34:08,540
شما چیزی از آیتم صف دریافت می کنید
735
00:34:08,540 –> 00:34:10,460
هیچ کدام است، به این معنی که در اینجا شما در حال خاموش
736
00:34:10,460 –> 00:34:29,379
کردن کد نهایی هستید مانند این
737
00:34:29,379 –> 00:34:32,659
اساساً دو تابع است که یکی
738
00:34:32,659 –> 00:34:36,109
داده ها را در یک صف تولید می کند و دیگری
739
00:34:36,109 –> 00:34:38,510
داده ها را از یک صف مصرف می کند. و سپس
740
00:34:38,510 –> 00:34:41,179
شما این دو تابع را خواهید داشت که ممکن است
741
00:34:41,179 –> 00:34:44,530
همزمان با thread ها یا کاری
742
00:34:44,530 –> 00:34:47,690
که من انجام می دهم به نوعی مانند یک
743
00:34:47,690 –> 00:34:51,020
نوع راه حل کلاسیک در اینجا با نخ ها
744
00:34:51,020 –> 00:34:52,639
و صف بندی کردن انجام می دهم، بنابراین آنچه به نظر می رسد
745
00:34:52,639 –> 00:34:56,060
این است که شما می خواهید انجام دهید. d
746
00:34:56,060 –> 00:34:57,800
اساساً یک صف بسازید مانند این
747
00:34:57,800 –> 00:35:01,700
اینجا است من like you هی مکعب ایمن رشته
748
00:35:01,700 –> 00:35:04,760
و سپس این دو مورد را راه اندازی
749
00:35:04,760 –> 00:35:07,010
می کنید تا می گویید خوب موضوع
750
00:35:07,010 –> 00:35:09,010
برابر است با تولید کننده یا
751
00:35:09,010 –> 00:35:13,760
q10 ما بیایید شروع کنیم و سپس
752
00:35:13,760 –> 00:35:20,570
آرگ مصرف کننده Q است. ستاره و اگر
753
00:35:20,570 –> 00:35:23,000
من این کار را درست انجام داده باشم، می بینید که
754
00:35:23,000 –> 00:35:25,430
تولیدکننده به نوعی چیزهایی را تولید می کند و
755
00:35:25,430 –> 00:35:26,900
آنها را به درستی در اختیار مصرف کننده قرار می دهد، من
756
00:35:26,900 –> 00:35:28,070
در واقع یک چیز دیگری
757
00:35:28,070 –> 00:35:29,360
را که می خواهم اینجا انجام دهم این است که آنها می خواهند
758
00:35:29,360 –> 00:35:33,620
سرعت آن را کاهش دهند. کمی با این که
759
00:35:33,620 –> 00:35:36,140
تهیه کننده همینطور بخوابد، خوب، پس
760
00:35:36,140 –> 00:35:40,630
بیایید سعی کنیم اجرا کنیم،
761
00:35:40,630 –> 00:35:43,160
اجازه دهید من این را در اینجا امتحان کنم، خب،
762
00:35:43,160 –> 00:35:48,440
تهیه کننده پایتون آن خداحافظ خوب است، بنابراین آنچه که
763
00:35:48,440 –> 00:35:50,240
می خواهید ببینید اساساً
764
00:35:50,240 –> 00:35:52,610
پیام تولید است و سپس شما.
765
00:35:52,610 –> 00:35:54,380
پیغام مصرف کننده را مشاهده می کنید که در حال مشاهده
766
00:35:54,380 –> 00:35:59,140
انتقال داده ها از یکی به دیگری هستید،
767
00:35:59,140 –> 00:36:01,580
بسیار خوب، بنابراین این یک نوع
768
00:36:01,580 –> 00:36:05,440
کلاسیک حل مشکل تولید کننده مصرف کننده
769
00:36:05,440 –> 00:36:07,970
770
00:36:07,970 –> 00:36:09,350
771
00:36:09,350 –> 00:36:11,500
است.
772
00:36:11,500 –> 00:36:14,690
شرکت مختصات ارتباط بین وظایف با استفاده از
773
00:36:14,690 –> 00:36:18,320
یک صف، اکنون مشکلی که می خواهم ایجاد کنم این
774
00:36:18,320 –> 00:36:21,590
است که چگونه این کار را بدون رشته انجام می دهید،
775
00:36:21,590 –> 00:36:27,230
نه این است، بنابراین اجازه دهید
776
00:36:27,230 –> 00:36:28,940
من این را در فایلی بنویسم که این را
777
00:36:28,940 –> 00:36:31,790
تولید کننده برای نوع نسخه غیر همگام
778
00:36:31,790 –> 00:36:39,560
این و چالش این است
779
00:36:39,560 –> 00:36:40,700
که شما میدانید چگونه همان عملکرد را پیادهسازی کنید،
780
00:36:40,700 –> 00:36:49,190
اما هیچ رشتهای ندارید،
781
00:36:49,190 –> 00:36:51,320
میدانید چگونه این کار را انجام میدهید، بنابراین ما
782
00:36:51,320 –> 00:36:52,880
مجاز به استفاده از هر یک از
783
00:36:52,880 –> 00:36:56,020
ماژولهای صف یا استفاده از ماژول threading از
784
00:36:56,020 –> 00:36:58,490
چیزی شبیه به آن نیستیم.
785
00:36:58,490 –> 00:37:03,200
ما باید از این استفاده کنیم،
786
00:37:03,200 –> 00:37:06,590
شما میدانید زمانبندی را میشناسید، زمانبندی را میشناسید
787
00:37:06,590 –> 00:37:09,230
که ما ساختهایم و بخش بزرگی از
788
00:37:09,230 –> 00:37:11,500
مشکل
789
00:37:11,660 –> 00:37:16,950
در واقع مربوط به این است که
790
00:37:16,950 –> 00:37:21,780
متد دریافت اساساً مرده است، این تابع
791
00:37:21,780 –> 00:37:24,740
در یک نشانه است که قرار است منتظر بمانیم
792
00:37:24,740 –> 00:37:28,020
تا چیزی درست ظاهر شود، بنابراین کل
793
00:37:28,020 –> 00:37:30,360
ایده در صف بندی این است که مصرف
794
00:37:30,360 –> 00:37:32,010
کننده قرار است به
795
00:37:32,010 –> 00:37:34,290
نوعی منتظر باشد
796
00:37:34,290 –> 00:37:35,940
تا اتفاقی بیفتد و سپس چه اتفاقی می افتد
797
00:37:35,940 –> 00:37:38,700
، باید این سوال را اجرا کند که چگونه
798
00:37:38,700 –> 00:37:42,180
انجام شود. w مثل اینکه چگونه انتظار را اجرا کنیم،
799
00:37:42,180 –> 00:37:46,920
این یک
800
00:37:46,920 –> 00:37:49,910
مشکل جالب است، بنابراین بیایید یک لحظه در مورد
801
00:37:49,910 –> 00:37:53,040
استراتژی در اینجا صحبت کنیم، بنابراین اولین
802
00:37:53,040 –> 00:37:57,570
چیز این است
803
00:37:57,570 –> 00:38:01,290
که ما از همان زمانبندی قبلی استفاده خواهیم کرد.
804
00:38:01,290 –> 00:38:03,060
مانند برنامه زمانبندی کوچکی
805
00:38:03,060 –> 00:38:05,250
که اینجا نوشتیم، ما واقعاً
806
00:38:05,250 –> 00:38:07,560
از آن استفاده خواهیم کرد که در واقع فقط
807
00:38:07,560 –> 00:38:10,050
آن کد را در این فایل دیگر کپی می کنم تا
808
00:38:10,050 –> 00:38:13,380
بتوانیم با آن کار کنیم، بنابراین بیایید
809
00:38:13,380 –> 00:38:17,430
آن را حفظ کنیم، خوب
810
00:38:17,430 –> 00:38:19,230
همین است که همین است کدی که ما قرار است
811
00:38:19,230 –> 00:38:22,560
با آن کار کنیم، سعی می کنم
812
00:38:22,560 –> 00:38:24,930
آن کد را کمابیش
813
00:38:24,930 –> 00:38:29,580
بدون تغییر نگه دارم، بنابراین آن
814
00:38:29,580 –> 00:38:32,580
کد را در اطراف نگه می دارم، اما سوال اصلی این است
815
00:38:32,580 –> 00:38:36,860
که چگونه باید ساختار بدهم.
816
00:38:36,860 –> 00:38:41,730
این چیزها برای استفاده نکردن از رشتهها
817
00:38:41,730 –> 00:38:43,800
منظورم این است که من نمیتوانم از رشتهها استفاده کنم، یک
818
00:38:43,800 –> 00:38:45,330
نکته کامل از همگامسازی این است که
819
00:38:45,330 –> 00:38:47,760
من از رشتهها استفاده نمیکنم، بنابراین
820
00:38:47,760 –> 00:38:49,500
821
00:38:49,500 –> 00:38:53,610
این موضوعات رشتهای را فراموش کنید و همچنین از این موضوع از صف امن این رشته استفاده نمیکنم.
822
00:38:53,610 –> 00:38:57,090
آن کار را انجام دهم که باید به
823
00:38:57,090 –> 00:39:00,360
نوعی صف خودم را اجرا کنم
824
00:39:00,360 –> 00:39:03,660
منظورم این است که شما
825
00:39:03,660 –> 00:39:06,030
باید مانند یک شی خاص بسازید،
826
00:39:06,030 –> 00:39:07,710
همانطور که شما یک صف ایجاد
827
00:39:07,710 –> 00:39:10,110
می کنید، مانند مواردی خواهید بود
828
00:39:10,110 –> 00:39:13,650
که در صف قرار می گیرند، مانند آنچه که من می
829
00:39:13,650 –> 00:39:15,780
خواهم یک متد put دارید که
830
00:39:15,780 –> 00:39:21,210
چیزی را روی دو آیتم قرار می دهد، خوب است، بنابراین ما آن
831
00:39:21,210 –> 00:39:24,750
را داریم، اما پس از آن، این روش دریافت را داریم
832
00:39:24,750 –> 00:39:27,230
833
00:39:27,650 –> 00:39:30,390
که اساساً باید منتظر بمانیم، منظورم
834
00:39:30,390 –> 00:39:34,860
این است که اگر این oh، بنابراین شما بدانید صبر کنید تا یک آیتم
835
00:39:34,860 –> 00:39:46,170
در دسترس باشد و سپس آن را برگردانید،
836
00:39:46,170 –> 00:39:49,370
سوال این است که چگونه آیا میخواهی این کار را انجام
837
00:39:49,370 –> 00:39:53,160
دهی، به نظر میرسد واقعاً عجیب به نظر میرسد،
838
00:39:53,160 –> 00:39:56,130
مثل اینکه میدانی مانند قدرت،
839
00:39:56,130 –> 00:40:03,840
چگونه این کار را واقعاً انجام میدهی، بنابراین
840
00:40:03,840 –> 00:40:06,090
به خاطر داشته باشید که انتظار اساساً یک
841
00:40:06,090 –> 00:40:09,170
مشکل است زیرا کل ایده در غیر
842
00:40:09,170 –> 00:40:11,370
همگام این است که شما هستید قرار نیست
843
00:40:11,370 –> 00:40:13,320
منتظر چیزهایی بمانید مثل اینکه شما مجاز
844
00:40:13,320 –> 00:40:16,110
به نوشتن کدی نیستید که فقط در یک
845
00:40:16,110 –> 00:40:18,360
حلقه قرار دارد یا از اتفاقات دیگر جلوگیری
846
00:40:18,360 –> 00:40:21,330
می کند، بنابراین باید بفهمم که شما
847
00:40:21,330 –> 00:40:25,700
یک مدل برنامه نویسی می شناسید تا این
848
00:40:25,700 –> 00:40:31,200
را بسازید تا این کار را انجام دهید. آیا
849
00:40:31,200 –> 00:40:34,650
آن را به خوبی منتظر نیست اینجا است که
850
00:40:34,650 –> 00:40:36,600
واقعا تنها است تنها تکنیکی
851
00:40:36,600 –> 00:40:40,260
که میتوانم در اینجا به آن
852
00:40:40,260 –> 00:40:41,940
فکر کنم این است که شما
853
00:40:41,940 –> 00:40:47,900
باید توابع پاسخ به تماس را ارائه کنید و دریافت کنید و
854
00:40:47,900 –> 00:40:50,280
از آن استفاده کنید،
855
00:40:50,280 –> 00:40:52,680
اگر مواردی وجود داشته باشند، اساساً میگویید خیلی خوب است.
856
00:40:52,680 –> 00:40:55,530
در دسترس است، مانند اگر چیزی در آیتمها وجود داشته باشد،
857
00:40:55,530 –> 00:40:59,460
کاری که ما انجام میدهیم این است که
858
00:40:59,460 –> 00:41:03,300
اساساً روش پاسخ به تماس را با
859
00:41:03,300 –> 00:41:05,430
یکی از آیتمها فعال کنیم، بسیار خوب است،
860
00:41:05,430 –> 00:41:07,350
اگر موردی در دسترس باشد، میگوییم خوب است تا با شما تماس
861
00:41:07,350 –> 00:41:12,800
بگیریم و به شما بگوییم که آن مورد چگونه است،
862
00:41:13,070 –> 00:41:15,750
اما اگر وجود دارد یک مورد در دسترس
863
00:41:15,750 –> 00:41:17,520
نیست منظورم این است که این یک مورد مشکل است، مثلاً
864
00:41:17,520 –> 00:41:20,790
اگر چیزی در دسترس نباشد چه می شود، پس
865
00:41:20,790 –> 00:41:24,450
باید به نوعی
866
00:41:24,450 –> 00:41:27,750
خودم را معلق کنم، باید کنار بروم و
867
00:41:27,750 –> 00:41:29,220
فقط بگویم خوب می دانید که نمی توانم فعلا این کار را انجام دهم.
868
00:41:29,220 –> 00:41:33,150
بنابراین به منظور پیاده سازی آن
869
00:41:33,150 –> 00:41:35,130
چیزی که اغلب انجام می دهید این است
870
00:41:35,130 –> 00:41:37,830
که شاید یک صف انتظار مانند این
871
00:41:37,830 –> 00:41:39,720
درست کنید، بنابراین
872
00:41:39,720 –> 00:41:43,180
همه اینها به نوعی منتظر داده ها هستند،
873
00:41:43,180 –> 00:41:45,400
بنابراین ما می توانیم مانند آن دوست داشتنی
874
00:41:45,400 –> 00:41:50,200
باشیم و شاید کاری که انجام می دهیم این باشد
875
00:41:50,200 –> 00:41:52,570
ما فقط مانند a قرار می دهیم عملکرد در
876
00:41:52,570 –> 00:41:55,270
آنجا وجود دارد، ما می گوییم خوب است، من
877
00:41:55,270 –> 00:41:57,820
چیزی را در قسمت انتظار قرار می دهم که در آن
878
00:41:57,820 –> 00:42:02,170
تماس می گیرم دریافت، نمی دانم، شاید
879
00:42:02,170 –> 00:42:07,540
فقط تماس بگیرم تا دوباره دریافت کنم، فقط کافی است
880
00:42:07,540 –> 00:42:12,040
آن را اضافه کنم و چه اتفاقی می افتد در اینجا این است
881
00:42:12,040 –> 00:42:15,520
که اگر هیچ داده ای در دسترس نباشد، ما فقط
882
00:42:15,520 –> 00:42:16,960
خود را به این چیز منتظر اضافه می کنیم
883
00:42:16,960 –> 00:42:19,390
و سپس از آنجا دور می شویم تا
884
00:42:19,390 –> 00:42:21,880
متد دریافت بلافاصله برگردد
885
00:42:21,880 –> 00:42:23,710
متوقف نمی شود، حلقه نمی شود یا هر چیزی
886
00:42:23,710 –> 00:42:30,610
شبیه به آن و ما باید داشته باشیم. شما
887
00:42:30,610 –> 00:42:32,170
چیزی را می دانید که اساساً
888
00:42:32,170 –> 00:42:34,540
بعداً با آن مقابله کنید، مثلاً
889
00:42:34,540 –> 00:42:40,060
آنچه در قسمت قرار دادن اینجا اتفاق می افتد این است که اگر
890
00:42:40,060 –> 00:42:47,530
چیزی در قسمت انتظار وجود
891
00:42:47,530 –> 00:42:53,350
داشته باشد، باید ترتیبی دهیم که آن را صدا کنیم، مانند اینکه
892
00:42:53,350 –> 00:42:56,580
ما اساساً چیزی
893
00:42:56,580 –> 00:43:02,140
را از فضای انتظار بیرون می آوریم. صف و سپس
894
00:43:02,140 –> 00:43:03,700
شاید ما آن را اکنون صدا کنیم، این در واقع
895
00:43:03,700 –> 00:43:05,620
896
00:43:05,620 –> 00:43:08,950
نوعی مشکل عجیب و جالب دیگر را نشان می دهد، آیا شما فوراً به آن زنگ
897
00:43:08,950 –> 00:43:16,120
می زنید، مثلاً آیا این کار را انجام می دهید یا
898
00:43:16,120 –> 00:43:18,250
کار دیگری انجام می دهید،
899
00:43:18,250 –> 00:43:20,230
معلوم می شود که در بسیاری از این
900
00:43:20,230 –> 00:43:23,500
نوع ناهمگام ها چارچوب کاری که آنها در
901
00:43:23,500 –> 00:43:27,460
عوض انجام خواهند داد i اساساً با زمانبندی ارتباط برقرار
902
00:43:27,460 –> 00:43:29,440
میکنند، آنها اساساً
903
00:43:29,440 –> 00:43:31,510
به زمانبندی میروند و میگویند خوب
904
00:43:31,510 –> 00:43:33,880
برنامهریزی، میخواهم در این تابع با sue تماس بگیرید
905
00:43:33,880 –> 00:43:36,310
که بخشی از
906
00:43:36,310 –> 00:43:39,600
دلیل آن این است که سعی کنید از
907
00:43:39,600 –> 00:43:42,670
وارد شدن به یک نوع برنامه جلوگیری کنید. مانند انواع توابع بازگشتی عمیق،
908
00:43:42,670 –> 00:43:44,980
منظورم این است که اگر
909
00:43:44,980 –> 00:43:49,350
بخواهم مستقیماً تابع را در اینجا فراخوانی کنم که در
910
00:43:49,350 –> 00:43:52,000
نهایت می تواند به نوعی مانند یک زنجیره
911
00:43:52,000 –> 00:43:53,050
عمیق پری ایجاد
912
00:43:53,050 –> 00:43:54,970
شود، مانند فراخوانی های تابع تو در تو
913
00:43:54,970 –> 00:43:56,530
و چیزهای دیگری است،
914
00:43:56,530 –> 00:43:58,210
اوه مامان، واقعاً سعی می کنم از آن
915
00:43:58,210 –> 00:44:07,780
اجتناب کنید، بنابراین اتفاقی که قرار است بیفتد
916
00:44:07,780 –> 00:44:10,750
اساساً با PUD است، اگر
917
00:44:10,750 –> 00:44:11,950
918
00:44:11,950 –> 00:44:13,690
چیزی در انتظار بود که آن را خاموش کند، آن را در صف قرار میدهید و
919
00:44:13,690 –> 00:44:15,370
فقط آن را به زمانبندی میدهید و
920
00:44:15,370 –> 00:44:17,560
میگویید وقتی به آن رسیدید، این مورد را اجرا کنید
921
00:44:17,560 –> 00:44:22,680
و سپس ما فقط فوراً برگردید، بسیار
922
00:44:23,520 –> 00:44:26,050
923
00:44:26,050 –> 00:44:28,330
خوب، بنابراین بیایید بیایید بیایید آنجا
924
00:44:28,330 –> 00:44:30,640
وجود داشته باشد، اجرای صف ما وجود دارد که چگونه
925
00:44:30,640 –> 00:44:32,470
باید با این کدنویسی کنید،
926
00:44:32,470 –> 00:44:36,280
در ضمن این هم یک جورهایی جالب است،
927
00:44:36,280 –> 00:44:40,330
بنابراین برای کدنویسی با th به خاطر
928
00:44:40,330 –> 00:44:42,790
داشته باشید که
929
00:44:42,790 –> 00:44:46,510
ما هنوز نمیتوانیم کارهایی مانند حلقهها را انجام دهیم، نمیتوانیم حلقه for را در آنجا انجام دهیم
930
00:44:46,510 –> 00:44:48,730
، زیرا حلقه for
931
00:44:48,730 –> 00:44:51,460
مانع از این کار میشود.
932
00:44:51,460 –> 00:44:53,680
933
00:44:53,680 –> 00:44:55,810
آن
934
00:44:55,810 –> 00:44:58,510
چیزی نیست که من می خواهم، بنابراین
935
00:44:58,510 –> 00:45:01,930
از همان تکنیکی استفاده خواهم کرد که
936
00:45:01,930 –> 00:45:03,970
قبل از آن داشتم، این نوع روش اجرا
937
00:45:03,970 –> 00:45:08,290
را ارائه می دهم که در آن شما به من پایان دهید،
938
00:45:08,290 –> 00:45:13,150
می گویم تولید و کجا یک اجرای
939
00:45:13,150 –> 00:45:16,780
زیبا انجام دهید و سپس من
940
00:45:16,780 –> 00:45:18,580
با زمانبندی کاری انجام میدهم، اساساً
941
00:45:18,580 –> 00:45:21,280
بعداً تماس
942
00:45:21,280 –> 00:45:25,960
میگیرم، میدانید یک ثانیه دیگر میخواهم بعداً با این
943
00:45:25,960 –> 00:45:30,180
روش اجرا با n بعلاوه یک تماس بگیرید،
944
00:45:44,630 –> 00:45:47,220
سپس من کار را شروع میکنم
945
00:45:47,220 –> 00:45:49,560
با یک حرکت صفر دوباره آنجا که به
946
00:45:49,560 –> 00:45:54,210
نظر می رسد بسیار عجیب به نظر می رسد،
947
00:45:54,210 –> 00:45:57,180
اما و سپس و پس از آن در پاییز امسال
948
00:45:57,180 –> 00:45:58,860
این زمستان، این قسمتی
949
00:45:58,860 –> 00:46:06,510
که اینجا تمام شده است، شما صف را در
950
00:46:06,510 –> 00:46:10,650
آنجا می بندید، خوب باید یک لحظه وقت بگذارید و مطالعه کنید
951
00:46:10,650 –> 00:46:13,740
که من یعنی دوباره اتفاقی که می افتد این است که
952
00:46:13,740 –> 00:46:15,480
این روش اجرا اساساً فقط یک
953
00:46:15,480 –> 00:46:16,890
بررسی انجام می دهد hing و سپس
954
00:46:16,890 –> 00:46:18,540
فوراً از انتهای
955
00:46:18,540 –> 00:46:20,790
تابع خارج می شود، اینجا هیچ حلقه ای وجود ندارد یا
956
00:46:20,790 –> 00:46:23,220
چیز دیگری برای
957
00:46:23,220 –> 00:46:26,550
958
00:46:26,550 –> 00:46:31,230
959
00:46:31,230 –> 00:46:32,730
این کار وجود دارد.
960
00:46:32,730 –> 00:46:39,810
تابع مصرف شاید من به یک
961
00:46:39,810 –> 00:46:41,850
تابع داخلی در آنجا نیاز نداشته باشم من در واقع کاری که
962
00:46:41,850 –> 00:46:45,240
ما انجام می دهیم نه در واقع ما به یک
963
00:46:45,240 –> 00:46:47,610
عملکرد داخلی نیاز داریم و آنچه انجام می
964
00:46:47,610 –> 00:46:50,430
دهیم مانند یک تابع مصرف است که در آن
965
00:46:50,430 –> 00:47:00,480
شما آیتم را به من می دهید خوب است بنابراین اگر مورد
966
00:47:00,480 –> 00:47:03,660
باشد هیچکدام، ما فقط
967
00:47:03,660 –> 00:47:09,000
کاری انجام نمیدهیم و سپس اگر این کار انجام نشد
968
00:47:09,000 –> 00:47:11,430
، اساساً وارد اینجا شده و میگوییم
969
00:47:11,430 –> 00:47:19,260
کالای مصرفکننده خوب است و ما
970
00:47:19,260 –> 00:47:23,120
خودمان را به صورت بازگشتی در اینجا صدا
971
00:47:33,160 –> 00:47:36,979
میزنیم، سپس یک Q دریافت میکنیم و برای
972
00:47:36,979 –> 00:47:45,999
تابع callback I باید به این نگاه
973
00:47:47,559 –> 00:47:49,789
کنم بله، من فکر می کنم اوه، بله، نه، فکر می کنم
974
00:47:49,789 –> 00:47:51,710
ما اوکی هستیم، خوب من در حال حاضر خوب است
975
00:47:51,710 –> 00:47:53,150
که سرم منفجر شود خوب است، بنابراین ما این
976
00:47:53,150 –> 00:47:56,900
کار را انجام می دهیم.
977
00:47:56,900 –> 00:47:59,479
می شود این
978
00:47:59,479 –> 00:48:12,259
توسط آه بسیار خم شدن مغز مصرف می شود
979
00:48:12,259 –> 00:48:15,259
بنابراین،
980
00:48:15,259 –> 00:48:18,769
ایده چیست، بنابراین ما این کار را انجام می دهیم،
981
00:48:18,769 –> 00:48:20,539
اگر موردی فوراً در
982
00:48:20,539 –> 00:48:22,160
دسترس باشد، آن را چاپ خواهید کرد، اما در غیر
983
00:48:22,160 –> 00:48:25,039
این صورت به حالت تعلیق در می آید و
984
00:48:25,039 –> 00:48:30,950
بعداً با آن تماس گرفته می شود. بیایید
985
00:48:30,950 –> 00:48:33,940
بیایید یک ناهمگام ایجاد کنیم، شما مخالفت می کنید، برنامه را انجام می دهیم،
986
00:48:33,940 –> 00:48:44,239
می دانید به زودی با تولیدکننده q10 تماس بگیرید،
987
00:48:44,239 –> 00:48:46,190
خوب است، بنابراین ما این کار را انجام نمی دهیم،
988
00:48:46,190 –> 00:48:48,349
اکنون به زودی با
989
00:48:48,349 –> 00:48:52,519
مصرف کننده Q تماس می گیریم و سپس این را اجرا می
990
00:48:52,519 –> 00:48:54,589
کنیم چیزی که اگر من این کار را درست انجام دادهام و
991
00:48:54,589 –> 00:48:58,549
آخرین کلمات معروف را انجام دادهام، باید ببینید
992
00:48:58,549 –> 00:49:01,430
که مانند نسخهی رشتهای رفتار میکند که
993
00:49:01,430 –> 00:49:10,880
من این را تولیدکننده نامیدم، پس
994
00:49:10,880 –> 00:49:12,619
بیایید آن را بررسی کنیم، خوب است تا
995
00:49:12,619 –> 00:49:16,160
ببینید شما میدانید اجرا میشود.
996
00:49:16,160 –> 00:49:20,769
به همان روشی که قبلاً
997
00:49:20,769 –> 00:49:24,440
مصرف کننده تولیدکننده خوب انجام می داد، اما
998
00:49:24,440 –> 00:49:27,829
قطعاً این یک تعامل پیچیده است، شما می دانید که تعامل پیچیده ای
999
00:49:27,829 –> 00:49:30,349
در اینجا وجود دارد که اساساً توابع
1000
00:49:30,349 –> 00:49:32,359
باید نوشته شوند تا هیچ
1001
00:49:32,359 –> 00:49:34,549
مسدودی وجود نداشته باشد، حلقه یا چیزی شبیه به آن وجود نداشته باشد،
1002
00:49:34,549 –> 00:49:35,180
1003
00:49:35,180 –> 00:49:37,190
بنابراین شما تولید کننده را بشناسید و
1004
00:49:37,190 –> 00:49:39,769
مصرف کننده آنها اساسا کی از یک
1005
00:49:39,769 –> 00:49:43,279
مرحله و آنها فوراً به نوعی
1006
00:49:43,279 –> 00:49:44,450
برنامهریزی میکنند که یک
1007
00:49:44,450 –> 00:49:46,820
تابع میدانید برای اجرا کردن، میدانید که برای اجرای گردنها
1008
00:49:46,820 –> 00:49:49,790
میدانید که در حال تعامل
1009
00:49:49,790 –> 00:49:52,010
با زمانبندی هستند، همان چیزی که با
1010
00:49:52,010 –> 00:49:55,010
مصرفکننده در اینجا شما انجام میدهید و سپس
1011
00:49:55,010 –> 00:49:56,750
باید یک را پاس کنید. تماس مجدد برای
1012
00:49:56,750 –> 00:49:58,849
چیزی که میدانید اجرا میشود
1013
00:49:58,849 –> 00:50:04,180
وقتی آیتمی دریافت کردید و سپس خود کلاس صف
1014
00:50:04,180 –> 00:50:07,160
باید کمی از
1015
00:50:07,160 –> 00:50:09,859
نوع مدیریت پیشخدمتهایی را که میشناسید انجام دهد، بنابراین یک نشانه
1016
00:50:09,859 –> 00:50:12,140
داخلی کوچک خاص خودش را
1017
00:50:12,140 –> 00:50:14,210
دارد و وجود دارد. نوعی
1018
00:50:14,210 –> 00:50:18,160
هماهنگی بین قرار دادن و
1019
00:50:18,160 –> 00:50:21,530
شروع در آنجا انجام میشود، بنابراین آنچه اتفاق میافتد این است
1020
00:50:21,530 –> 00:50:26,150
که میدانید دریافت
1021
00:50:26,150 –> 00:50:28,190
اگر دادهای در دسترس باشد، یک تماس برگشتی را راهاندازی میکند و
1022
00:50:28,190 –> 00:50:30,770
اگر نه، باید ترتیبی دهد
1023
00:50:30,770 –> 00:50:33,770
که بعداً اجرا شود، بنابراین ایده این است که بدانید
1024
00:50:33,770 –> 00:50:35,140
آیا هیچ داده ای وجود
1025
00:50:35,140 –> 00:50:37,940
ندارد، فقط به تعویق می اندازد که آنها دوست دارند
1026
00:50:37,940 –> 00:50:39,980
این روش در زمان بعدی اتفاق بیفتد.
1027
00:50:39,980 –> 00:50:42,460
1028
00:50:45,130 –> 00:50:50,270
1029
00:50:50,270 –> 00:50:55,550
1030
00:50:55,550 –> 00:50:59,119
1031
00:50:59,119 –> 00:51:02,030
منظورم این است که get
1032
00:51:02,030 –> 00:51:04,760
در قرار دادن، اساساً
1033
00:51:04,760 –> 00:51:06,470
این تابع callback را دارد که
1034
00:51:06,470 –> 00:51:09,530
به آن ارائه میشود و تمام
1035
00:51:09,530 –> 00:51:12,829
نتایج دریافت از
1036
00:51:12,829 –> 00:51:16,160
طریق آن callback به درستی ارتباط
1037
00:51:16,160 –> 00:51:17,990
1038
00:51:17,990 –> 00:51:21,200
برقرار میکند. اتفاقی می افتد که
1039
00:51:21,200 –> 00:51:23,720
شما به نوعی باعث آن شده اید، بنابراین من
1040
00:51:23,720 –> 00:51:26,780
می خواستم یک تغییر در
1041
00:51:26,780 –> 00:51:28,609
نشانه ایجاد کنم که کل این شهر
1042
00:51:28,609 –> 00:51:31,390
را بدتر می کند،
1043
00:51:31,390 –> 00:51:33,829
اما به نوعی
1044
00:51:33,829 –> 00:51:36,619
مشکلی را نشان می دهد که من را تغییر می دهد.
1045
00:51:36,619 –> 00:51:39,550
gonna make است که من به نشانه یک
1046
00:51:39,550 –> 00:51:43,010
پرچم داخلی می دهم که تعیین می کند
1047
00:51:43,010 –> 00:51:46,750
آیا نشانه می تواند دیگر استفاده شود یا خیر
1048
00:51:49,590 –> 00:51:55,290
و هدف آن پرچم این است که
1049
00:51:55,290 –> 00:51:57,120
اساساً مانع از قرار دادن
1050
00:51:57,120 –> 00:51:59,430
آیتم های جدید در آنجا می
1051
00:51:59,430 –> 00:52:01,770
شود. من به عنوان یک
1052
00:52:01,770 –> 00:52:03,840
استثنا مطرح می کنم، می گویم لباس های نشانه گذاری نمی توانند این کار را انجام دهند،
1053
00:52:03,840 –> 00:52:06,020
1054
00:52:06,530 –> 00:52:09,000
من به این چیز یک روش بسته می
1055
00:52:09,000 –> 00:52:12,120
دهم که اساساً آن را تغییر می دهد
1056
00:52:12,120 –> 00:52:17,160
و ایده روی لباس این است که یک تولید کننده
1057
00:52:17,160 –> 00:52:20,490
به جای استفاده از آن از آن استفاده کند. این
1058
00:52:20,490 –> 00:52:24,240
هک عجیب با شی راهبه، بنابراین بهجای
1059
00:52:24,240 –> 00:52:26,580
اینکه وقتی تولیدتان تمام شد، نون را روی آن قرار
1060
00:52:26,580 –> 00:52:29,130
دهید، فقط وارد میشوید و
1061
00:52:29,130 –> 00:52:31,800
لباسهای نشانهگذاری را میگویید و این اساساً
1062
00:52:31,800 –> 00:52:33,780
به این معنی است که هیچ کالای دیگری
1063
00:52:33,780 –> 00:52:39,660
تولید نخواهد شد، بنابراین این ایده
1064
00:52:39,660 –> 00:52:41,310
سازنده است. چیزها را در
1065
00:52:41,310 –> 00:52:43,950
صف قرار میدهیم، صف را میبندم و
1066
00:52:43,950 –> 00:52:47,970
بعد وقتی بسته میشود، هیچ
1067
00:52:47,970 –> 00:52:52,440
چیز دیگری نمیدانی نمیتواند اتفاق بیفتد، اینجا
1068
00:52:52,440 –> 00:52:55,380
جایی است که این یک
1069
00:52:55,380 –> 00:53:00,020
جورهایی مودار میشود، چگونه صف بسته
1070
00:53:00,020 –> 00:53:15,450
با این تابع دریافت تعامل
1071
00:53:15,450 –> 00:53:19,730
میکند. تعامل مناسب وجود دارد و
1072
00:53:19,730 –> 00:53:23,160
به همین دلیل است که این واقعاً یک
1073
00:53:23,160 –> 00:53:25,890
جورهایی عجیب و غریب می شود، بنابراین اول از همه اگر در
1074
00:53:25,890 –> 00:53:29,520
صف هنوز آیتم هایی در آن وجود دارد، بنابراین فرض
1075
00:53:29,520 –> 00:53:31,290
کنید تولیدکننده مانند یک دسته از
1076
00:53:31,290 –> 00:53:32,880
اقلام تولید می کند که شما می دانید یک دو سه
1077
00:53:32,880 –> 00:53:34,800
چهار پنج شش تولید می کند.
1078
00:53:34,800 –> 00:53:38,130
اگر آن آیتمها هنوز در صف هستند، اگر آن آیتمها هنوز در
1079
00:53:38,130 –> 00:53:41,610
صف هستند، اشکالی ندارد که
1080
00:53:41,610 –> 00:53:45,330
دریافت کنید، مثل اینکه کسی تماس میگیرد،
1081
00:53:45,330 –> 00:53:47,580
میخواهید موارد را بیرون بکشید،
1082
00:53:47,580 –> 00:53:49,800
زیرا ممکن است این مورد باشد.
1083
00:53:49,800 –> 00:53:51,870
مثلاً مصرفکننده و تولیدکننده یا
1084
00:53:51,870 –> 00:53:53,550
دویدن با نرخهای مختلف یا چیزی
1085
00:53:53,550 –> 00:53:55,830
شبیه به آن، ایده روی لباس این است
1086
00:53:55,830 –> 00:53:58,770
که شما نمیخواهید دادهها را از دست بدهید،
1087
00:53:58,770 –> 00:53:59,970
فقط آن را نمیخواهید، فقط میگویید
1088
00:53:59,970 –> 00:54:01,890
من دیگر تولید نمیکنم. پس از
1089
00:54:01,890 –> 00:54:06,900
آن، بنابراین اگر برچسبی وجود داشته باشد، شما همچنان
1090
00:54:06,900 –> 00:54:08,970
میخواهید پاسخ تماس را انجام دهید، بنابراین مانند این
1091
00:54:08,970 –> 00:54:11,400
مانند این هنوز اجرا میشود،
1092
00:54:11,400 –> 00:54:16,320
میدانید که بسته است، اما جایی که بسته قرار
1093
00:54:16,320 –> 00:54:19,620
است به نوعی خود را نشان دهد، در
1094
00:54:19,620 –> 00:54:23,660
این مورد است که هیچ مورد دیگری وجود ندارد،
1095
00:54:23,660 –> 00:54:26,490
بنابراین خیر اقلام موجود هستند
1096
00:54:26,490 –> 00:54:31,920
بسیار خوب، بنابراین باید منتظر بمانید که اساساً
1097
00:54:31,920 –> 00:54:37,110
جایی است که می خواهید
1098
00:54:37,110 –> 00:54:41,910
مانند چیزهای بسته شدنی انجام دهید و بنابراین
1099
00:54:41,910 –> 00:54:44,100
سؤال این است که چگونه آن
1100
00:54:44,100 –> 00:54:48,360
ارتباط برقرار می شود، مثل اینکه چگونه
1101
00:54:48,360 –> 00:54:51,630
ارتباط برقرار می شود، بسیار خوب، بنابراین اگر
1102
00:54:51,630 –> 00:54:58,860
موضوع درست است مثل این است که اگر بسته باشد،
1103
00:54:58,860 –> 00:55:06,420
اینجا چه کار میکنید، خوب، حالا چگونه با
1104
00:55:06,420 –> 00:55:09,000
آن ارتباط برقرار میکنید، به همین دلیل است که
1105
00:55:09,000 –> 00:55:11,820
این واقعاً یک جور مشکل است، معلوم
1106
00:55:11,820 –> 00:55:15,380
میشود که نتیجه دریافت
1107
00:55:15,380 –> 00:55:19,470
اساساً این تابع پاسخ به تماس است درست
1108
00:55:19,470 –> 00:55:21,000
منظورم اساساً منظورم است. راهی که
1109
00:55:21,000 –> 00:55:22,860
qu eue کار می کند این است که شما تماس می گیرید اما
1110
00:55:22,860 –> 00:55:25,430
قرار است این تماس را به آن بدهید و
1111
00:55:25,430 –> 00:55:28,020
این callback است که از این
1112
00:55:28,020 –> 00:55:29,520
پشتیبانی پشتیبانی می کند که قرار است به نوعی
1113
00:55:29,520 –> 00:55:32,790
تعیین کند که اکنون چه اتفاقی می افتد مانند
1114
00:55:32,790 –> 00:55:37,650
مرحله بعدی محاسبه و
1115
00:55:37,650 –> 00:55:41,420
به نظر می رسد که این callback
1116
00:55:41,420 –> 00:55:44,160
اساساً چیست اگر به کد مصرفکننده نگاه کنید، چه چیزی باید با
1117
00:55:44,160 –> 00:55:46,740
لباسهای مکعبی کنار بیاید، مانند اینجا،
1118
00:55:46,740 –> 00:55:48,920
اگر به کد مصرفکننده نگاه کنید،
1119
00:55:48,920 –> 00:55:51,840
این اساساً تماس من است، مثل
1120
00:55:51,840 –> 00:55:56,130
این است که کالای مورد نظر را دریافت کردم، مصرفکننده تمام
1121
00:55:56,130 –> 00:55:59,790
شده است مصرف این مورد در اینجا
1122
00:55:59,790 –> 00:56:04,350
هیچکدام را بررسی کنید، این اساساً صف است.
1123
00:56:04,350 –> 00:56:09,450
بسته شده آنجا را بررسی کنید تا
1124
00:56:09,450 –> 00:56:11,070
جایی که در آن بررسی می شود به
1125
00:56:11,070 –> 00:56:13,540
نوعی در تابع callback قرار داده شود
1126
00:56:13,540 –> 00:56:17,109
و سوال این است که
1127
00:56:17,109 –> 00:56:21,400
چگونه یک خطا را در آن نقطه ارسال می کنید، منظورم
1128
00:56:21,400 –> 00:56:23,230
این است که اگرچه این یک نوع
1129
00:56:23,230 –> 00:56:26,140
مشکل هماهنگی واقعاً پیچیده است که
1130
00:56:26,140 –> 00:56:28,180
جایی اتفاق میافتد که من باید
1131
00:56:28,180 –> 00:56:32,440
اساساً یک خطا را به
1132
00:56:32,440 –> 00:56:34,930
callback ارسال کنم، یا باید
1133
00:56:34,930 –> 00:56:36,910
نتیجهای را داشته باشم که به callback میرود یا
1134
00:56:36,910 –> 00:56:42,010
باید مانند یک خطای مشابه داشته باشم. من
1135
00:56:42,010 –> 00:56:44,920
مطمئن نیستم که آیا این مشکل منطقی است یا خیر،
1136
00:56:44,920 –> 00:56:47,950
اما شما می دانید که این
1137
00:56:47,950 –> 00:56:50,590
اساساً یک حالت خطا است و این
1138
00:56:50,590 –> 00:56:58,930
مانند یک نتیجه معمولی است که به نوعی
1139
00:56:58,930 –> 00:57:03,340
عجیب و غریب است، بنابراین در اینجا یکی از راه هایی است
1140
00:57:03,340 –> 00:57:05,350
که ممکن است آن مشکل برطرف شود.
1141
00:57:05,350 –> 00:57:07,660
من از این متنفرم،
1142
00:57:07,660 –> 00:57:09,760
اما یکی از راههایی که ممکن است به آن رسیدگی شود این
1143
00:57:09,760 –> 00:57:13,330
است که یک کلاس نتیجه خاص ایجاد کنید
1144
00:57:13,330 –> 00:57:17,619
و کلاس نتیجه
1145
00:57:17,619 –> 00:57:19,810
اساساً مقداری خواهد داشت که
1146
00:57:19,810 –> 00:57:21,609
میتواند هیچ باشد یا
1147
00:57:21,609 –> 00:57:27,040
میتواند استثنا داشته باشد، ممکن است
1148
00:57:27,040 –> 00:57:29,020
می تواند یک مقدار یا یک استثنا داشته باشد، پس
1149
00:57:29,020 –> 00:57:31,900
بیایید ببینیم که شما این کار را انجام می دهید و من
1150
00:57:31,900 –> 00:57:34,710
اساساً تابعی را ارائه می دهم که
1151
00:57:34,710 –> 00:57:37,510
نتیجه را برمی گرداند و روشی که این
1152
00:57:37,510 –> 00:57:39,190
تابع کار می کند به این صورت است که او اساساً
1153
00:57:39,190 –> 00:57:42,940
می گوید اگر استثنایی وجود داشته باشد، آن را
1154
00:57:42,940 –> 00:57:48,000
افزایش می دهد و اگر استثنایی وجود
1155
00:57:48,000 –> 00:57:50,740
نداشته باشد، مقداری را که
1156
00:57:50,740 –> 00:57:52,960
در آنجا ارسال شده است برمی گرداند، بسیار خوب به نظر می رسد این کمی عجیب به نظر می رسد،
1157
00:57:52,960 –> 00:57:54,790
اما در اصل چیزی که
1158
00:57:54,790 –> 00:57:57,040
شما دارید بسته بندی شما یک
1159
00:57:57,040 –> 00:58:00,790
مقدار یا یک استثنا Python در یک
1160
00:58:00,790 –> 00:58:04,780
شی است، بنابراین یا کار می کند. یا نشد یا
1161
00:58:04,780 –> 00:58:08,320
کار نکرد و این
1162
00:58:08,320 –> 00:58:10,540
همان چیزی است که در اینجا با
1163
00:58:10,540 –> 00:58:12,670
متد دریافت استفاده میکنید، معلوم میشود که این
1164
00:58:12,670 –> 00:58:17,320
کار بهجای انجام
1165
00:58:17,320 –> 00:58:20,910
callback که در آن شما فقط همان مورد را به
1166
00:58:20,910 –> 00:58:23,320
آن میدهید انجام می دهید این است که شما در یک نتیجه عبور می کنید،
1167
00:58:23,320 –> 00:58:25,000
مثل اینکه می گویید خوب است،
1168
00:58:25,000 –> 00:58:27,520
مقدار نتیجه اساساً این است
1169
00:58:27,520 –> 00:58:30,490
، آنها اوکی هستند که اساساً
1170
00:58:30,490 –> 00:58:32,650
مثل این است که نتیجه خوبی است، خوب است، بنابراین
1171
00:58:32,650 –> 00:58:35,680
1172
00:58:35,680 –> 00:58:39,910
اگر چیزی بسته شود، این کار را انجام خواهید داد. این کار این است که شما
1173
00:58:39,910 –> 00:58:42,640
تابع callback را انجام میدهید و
1174
00:58:42,640 –> 00:58:45,040
در یک استثنا عبور میکنید، در
1175
00:58:45,040 –> 00:58:49,450
عوض، اساساً میگویید خوب، بیایید
1176
00:58:49,450 –> 00:58:51,340
callback را فراخوانی کنیم، اما اجازه دهید آن را به
1177
00:58:51,340 –> 00:58:54,190
نتیجهای منتقل کنیم که اساساً نشان میدهیم
1178
00:58:54,190 –> 00:59:00,250
که صف بسته است، خوب این یک
1179
00:59:00,250 –> 00:59:02,440
نتیجه خطا، اساساً دو
1180
00:59:02,440 –> 00:59:04,510
احتمال داریم که برگردد، مثل این است که شما
1181
00:59:04,510 –> 00:59:06,160
یا نتیجه خوب یا
1182
00:59:06,160 –> 00:59:10,600
نتیجه بد دارید، بنابراین ما میخواهیم
1183
00:59:10,600 –> 00:59:12,670
آن را اساساً با
1184
00:59:12,670 –> 00:59:16,060
callback در آنجا و سپس در کدی که
1185
00:59:16,060 –> 00:59:19,630
استفاده میکند تنظیم کنیم. پاسخ به تماسی که باید انجام دهید
1186
00:59:19,630 –> 00:59:22,710
1187
00:59:22,710 –> 00:59:25,690
اگر میخواهید،
1188
00:59:25,690 –> 00:59:27,670
1189
00:59:27,670 –> 00:59:33,430
1190
00:59:33,430 –> 00:59:35,020
1191
00:59:35,020 –> 00:59:37,330
این را بررسی کنید، مانند
1192
00:59:37,330 –> 00:59:40,180
باز کردن نتیجه و سپس اگر
1193
00:59:40,180 –> 00:59:44,200
کار کرد، شما فقط با
1194
00:59:44,200 –> 00:59:46,869
کد معمولی خود که قبلاً داشتید،
1195
00:59:46,869 –> 00:59:49,119
ادامه میدهید، بنابراین باید آن را داشته باشید و سپس
1196
00:59:49,119 –> 00:59:54,369
اگر QED بسته بود، میتوانید کار مصرفکننده را
1197
00:59:54,369 –> 01:00:02,440
انجام دهید، بنابراین نوعی از
1198
01:00:02,440 –> 01:00:05,230
نوع ارتباط است. از a you know یک نوع
1199
01:00:05,230 –> 01:00:08,830
مانند یک پاسخ همراه با یک شما می دانید
1200
01:00:08,830 –> 01:00:11,410
مانند یک مانند یک استثنا مانند که
1201
01:00:11,410 –> 01:00:13,300
اساسا شما آن را در داخل یک
1202
01:00:13,300 –> 01:00:17,800
شی قرار می دهید و هر دو چیز را مانند هر
1203
01:00:17,800 –> 01:00:21,850
دو چیز در امتداد ارسال می کنید، بنابراین کد در
1204
01:00:21,850 –> 01:00:23,680
حال حاضر شبیه به آن است. خیلی
1205
01:00:23,680 –> 01:00:25,510
پیچیده تر است، جایی که شما نتیجه را
1206
01:00:25,510 –> 01:00:28,810
دارید، ارزش دارید و و غیره
1207
01:00:28,810 –> 01:00:29,950
بیایید ببینیم آیا واقعاً کار می کند یا
1208
01:00:29,950 –> 01:00:35,470
نه، بنابراین ایده اکنون این است که تولید کننده
1209
01:00:35,470 –> 01:00:36,640
چیزهایی را تولید کند و
1210
01:00:36,640 –> 01:00:40,020
نشانه را ببندد که بسته شدن
1211
01:00:40,020 –> 01:00:42,660
نشانه انجام می شود. به انسان خود را در
1212
01:00:42,660 –> 01:00:46,890
مصرف کننده به عنوان یک صف بسته استثنا نشان می دهد، اما
1213
01:00:46,890 –> 01:00:48,570
فقط پس از مصرف همه موارد،
1214
01:00:48,570 –> 01:00:58,350
بیایید آن را امتحان کنیم، بنابراین به
1215
01:00:58,350 –> 01:01:00,000
نظر می رسد کد
1216
01:01:00,000 –> 01:01:08,040
مانند قبل از تولید کننده Don اجرا می شود. من
1217
01:01:08,040 –> 01:01:10,920
مصرف کننده Don را ندیدم روش بنابراین
1218
01:01:10,920 –> 01:01:16,320
اجازه دهید من مطمئن شوم که بله
1219
01:01:16,320 –> 01:01:19,470
نوعی تعجب است که با آن چه اتفاقی افتاده است
1220
01:01:19,470 –> 01:01:26,150
به جز لباس های نشانه
1221
01:01:51,850 –> 01:01:53,990
بله مطمئن نیستم با آن چه اتفاقی افتاده است
1222
01:01:53,990 –> 01:01:57,290
که شما باید به نظر مصرف کننده
1223
01:01:57,290 –> 01:01:59,750
قطعا متوقف شده است،
1224
01:01:59,750 –> 01:02:02,960
اما سوال اینجاست که چرا ”
1225
01:02:02,960 –> 01:02:07,750
چرا پیام چاپ نشد، این
1226
01:02:07,810 –> 01:02:12,320
یک نوع مشکل بسیار جالب است
1227
01:02:12,320 –> 01:02:17,290
، بیایید بیایید
1228
01:02:21,730 –> 01:02:28,070
نگاهی دیگر به آن بیندازیم، خوب اگر
1229
01:02:28,070 –> 01:02:32,200
مواردی وجود دارد، تماس را انجام خواهیم داد، اوه،
1230
01:02:32,440 –> 01:02:40,250
فکر می کنم می دانم چه چیزی ممکن است فکر میکنم
1231
01:02:40,250 –> 01:02:41,450
ممکن است بدانم چه مشکلی وجود دارد، خوب،
1232
01:02:41,450 –> 01:02:45,710
بنابراین این یک جور عجیب و غریب است مانند
1233
01:02:45,710 –> 01:02:48,560
برنامهریزی در آنجا، اجازه دهید امتحان
1234
01:02:48,560 –> 01:03:02,080
کنم دوباره شما هنوز مصرفکننده
1235
01:03:02,080 –> 01:03:05,450
مصرفکننده را در اینجا میشناسید و ایده این است که
1236
01:03:05,450 –> 01:03:08,120
در هنگام دریافت بدانید که آیا اقلامی
1237
01:03:08,120 –> 01:03:10,250
در دسترس هستند یا خیر. ما فوری ately call the act
1238
01:03:10,250 –> 01:03:15,950
the call back اگر بسته باشد،
1239
01:03:15,950 –> 01:03:22,280
تماس را با نتیجه خطایی انجام می دهد، اوه من
1240
01:03:22,280 –> 01:03:23,630
آن را می دانم.
1241
01:03:23,630 –> 01:03:26,120
1242
01:03:26,120 –> 01:03:28,640
1243
01:03:28,640 –> 01:03:43,970
در انتظار، هیچ آیتمی
1244
01:03:43,970 –> 01:03:46,730
در دسترس نیست، پس بیایید این کار را انجام دهیم،
1245
01:03:46,730 –> 01:03:48,980
شما باید اساساً کیسههای تماس آنها را برنامهریزی
1246
01:03:48,980 –> 01:03:51,460
1247
01:04:00,249 –> 01:04:03,699
کنید، بیایید امتحان کنیم،
1248
01:04:24,020 –> 01:04:25,260
1249
01:04:25,260 –> 01:04:27,960
خوب خوب پیشرفت بیشتری در آن داشت،
1250
01:04:27,960 –> 01:04:29,730
اوه بله، ببینیم آیا من یک
1251
01:04:29,730 –> 01:04:31,050
استثنا را از دست دادهام در جایی که من واقعاً
1252
01:04:31,050 –> 01:04:33,960
آن را تعریف کردم. اوه شاید بله باشه
1253
01:04:33,960 –> 01:04:38,420
خوب من در واقع لباس Q خود را تعریف
1254
01:04:40,100 –> 01:04:43,110
نکردم استثناء در حال پیشرفت است اما
1255
01:04:43,110 –> 01:04:44,550
حداقل من خطا را دریافت کردم یا
1256
01:04:44,550 –> 01:04:54,750
آن زمان برگشت درست همان چیزی است
1257
01:04:54,750 –> 01:04:55,710
که می خواستم
1258
01:04:55,710 –> 01:04:59,520
حالا یک نظر در مورد اینکه چرا این
1259
01:04:59,520 –> 01:05:02,250
قسمت کوچک آخر این است به نظر می رسد که
1260
01:05:02,250 –> 01:05:05,070
گزارش خطا در واقع یک مشکل بسیار
1261
01:05:05,070 –> 01:05:07,320
مشکل است و
1262
01:05:07,320 –> 01:05:09,060
اگر شما
1263
01:05:09,060 –> 01:05:10,980
از بسیاری از توابع پاسخ به تماس استفاده می کنید
1264
01:05:10,980 –> 01:05:14,670
و نیاز به انتقال خطاها دارید، من این فریم ورک های غیر همگام را دوست
1265
01:05:14,670 –> 01:05:16,470
دارم. مشکل او از اینکه
1266
01:05:16,470 –> 01:05:19,350
چگونه دوست دارید چگونه خطاها
1267
01:05:19,350 –> 01:05:22,980
را در برنامه خود حمل کنید و آنها را
1268
01:05:22,980 –> 01:05:25,650
در داخل یک شی مانند این قرار دهید یکی از راه
1269
01:05:25,650 –> 01:05:28,230
های انجام این کار است که معلوم می شود IO async
1270
01:05:28,230 –> 01:05:30,840
این کار را با بسته بندی همه چیز
1271
01:05:30,840 –> 01:05:34,110
در یک شی آینده انجام می دهد تا آینده در
1272
01:05:34,110 –> 01:05:36,090
1273
01:05:36,090 –> 01:05:38,910
نتیجه شما ممکن است انواع مختلفی
1274
01:05:38,910 –> 01:05:41,610
از این مورد را در کتابخانه ها مشاهده کنید،
1275
01:05:41,610 –> 01:05:43,500
اما اساساً برای حل
1276
01:05:43,500 –> 01:05:45,510
این مشکل است که می دانید
1277
01:05:45,510 –> 01:05:47,490
مفهوم موفقیت وجود دارد و
1278
01:05:47,490 –> 01:05:49,860
مفهوم شکست وجود دارد و شما دارید برای
1279
01:05:49,860 –> 01:05:52,310
برقراری ارتباط با این موضوع در
1280
01:05:52,310 –> 01:05:54,870
سیستم، نوع دیگری از اظهار نظر عمومی
1281
01:05:54,870 –> 01:05:57,930
1282
01:05:57,930 –> 01:06:00,630
1283
01:06:00,630 –> 01:06:01,980
1284
01:06:01,980 –> 01:06:04,110
1285
01:06:04,110 –> 01:06:07,290
است. اوه، بله، یک جهنم پاسخ به تماس، شما
1286
01:06:07,290 –> 01:06:09,210
واقعاً می بینید که اینجا منظورم این است که
1287
01:06:09,210 –> 01:06:11,010
انگار کد در حال تبدیل شدن به این است، مانند
1288
01:06:11,010 –> 01:06:13,170
اسپاگتی از توابع پاسخ به تماس، من
1289
01:06:13,170 –> 01:06:15,930
رک و پوست کنده برایم سخت است
1290