ความแตกต่างระหว่างการดำเนินการแบบอะซิงโครนัสและการซิงโครนัสคืออะไร
ความแตกต่างระหว่างการดำเนินการแบบอะซิงโครนัสและการซิงโครนัสคืออะไร
คำตอบ:
เมื่อคุณดำเนินการบางอย่างพร้อมกันคุณจะรอให้เสร็จก่อนที่จะไปยังงานอื่น เมื่อคุณดำเนินการแบบอะซิงโครนัสคุณสามารถไปยังงานอื่นก่อนที่จะเสร็จสิ้น
ที่ถูกกล่าวว่าในบริบทของคอมพิวเตอร์นี้แปลเป็นการดำเนินการกระบวนการหรืองานใน "ด้าย" อื่น เธรดคือชุดคำสั่ง (บล็อกของรหัส) ที่มีอยู่เป็นหน่วยงานหนึ่ง ระบบปฏิบัติการสามารถจัดการหลายเธรดและกำหนดเธรดหนึ่งส่วน ("สไลซ์") ของเวลาตัวประมวลผลก่อนที่จะสลับไปยังเธรดอื่นเพื่อให้มันทำงานได้ ที่แกนกลาง (ให้อภัย the pun) หน่วยประมวลผลสามารถดำเนินการคำสั่งได้อย่างง่ายดายโดยไม่มีแนวคิดในการทำสองสิ่งพร้อมกัน ระบบปฏิบัติการจำลองสิ่งนี้โดยการแบ่งส่วนของเวลาให้กับเธรดที่ต่างกัน
ทีนี้ถ้าคุณแนะนำหลายคอร์ / โปรเซสเซอร์เข้าด้วยกันแล้วสิ่งต่าง ๆ ก็สามารถเกิดขึ้นได้ในเวลาเดียวกัน ระบบปฏิบัติการสามารถจัดสรรเวลาให้กับหนึ่งเธรดในตัวประมวลผลแรกจากนั้นจัดสรรเวลาบล็อกเดียวกันให้กับเธรดอื่นบนตัวประมวลผลอื่น ทั้งหมดนี้เกี่ยวกับการอนุญาตให้ระบบปฏิบัติการจัดการงานของคุณให้เสร็จสมบูรณ์ในขณะที่คุณสามารถดำเนินการต่อในโค้ดและทำสิ่งอื่น ๆ
การเขียนโปรแกรมแบบอะซิงโครนัสเป็นหัวข้อที่ซับซ้อนเนื่องจากความหมายของสิ่งต่าง ๆ ที่ผูกเข้าด้วยกันเมื่อคุณสามารถทำได้ในเวลาเดียวกัน มีบทความและหนังสือมากมายในเรื่องนี้ ได้ดู!
ซิงโครนัส / อะซิงโครนัสไม่มีอะไรเกี่ยวข้องกับมัลติเธรด
ซิงโครนัสหรือซิงโครไนซ์หมายถึง "เชื่อมต่อ" หรือ "ขึ้นอยู่กับ" ในบางวิธี กล่าวอีกนัยหนึ่งภารกิจซิงโครนัสสองงานต้องรับรู้อีกงานหนึ่งและงานหนึ่งต้องดำเนินการในลักษณะที่ขึ้นอยู่กับงานอื่นเช่นรอเริ่มงานจนกว่างานอื่นจะเสร็จสิ้น
อะซิงโครนัสหมายความว่าพวกเขามีความเป็นอิสระอย่างสมบูรณ์และไม่มีใครจะต้องพิจารณาอื่น ๆ ในทางใด ๆ ไม่ว่าในการเริ่มต้นหรือในการดำเนินการ
ซิงโครนัส (หนึ่งเธรด):
1 thread -> |<---A---->||<----B---------->||<------C----->|
ซิงโครนัส (มัลติเธรด):
thread A -> |<---A---->|
\
thread B ------------> ->|<----B---------->|
\
thread C ----------------------------------> ->|<------C----->|
อะซิงโครนัส (หนึ่งเธรด):
A-Start ------------------------------------------ A-End
| B-Start -----------------------------------------|--- B-End
| | C-Start ------------------- C-End | |
| | | | | |
V V V V V V
1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->|
แบบอะซิงโครนัส (แบบมัลติเธรด):
thread A -> |<---A---->|
thread B -----> |<----B---------->|
thread C ---------> |<------C--------->|
<
, >
ตัวละคร|
เทคนิคแนวคิดของการซิงโคร / ตรงกันจริงๆไม่ได้มีอะไรจะทำอย่างไรกับหัวข้อ แม้ว่าโดยทั่วไปมันเป็นเรื่องปกติที่จะหางานที่ไม่ตรงกันทำงานในหัวข้อเดียวกันก็เป็นไปได้ (ดูตัวอย่างด้านล่าง) และมันก็เป็นเรื่องธรรมดาที่จะหาสองคนหรือมากกว่างานที่ดำเนินการพร้อมกันในวันที่แยกต่างหากกระทู้ ... ไม่มีแนวคิด ของการซิงโครนัส / อะซิงโครนัสต้องทำเพียงแค่ว่างานที่สองหรือที่ตามมาสามารถเริ่มต้นได้ก่อนที่งานอื่น (งานแรก) จะเสร็จสิ้นหรือต้องรอ นั้นคือทั้งหมด. เธรด (หรือเธรด) หรือกระบวนการหรือซีพียูใดหรือแน่นอนว่าฮาร์ดแวร์ใดงานที่เรียกใช้งานนั้นไม่เกี่ยวข้อง ที่จริงเพื่อให้จุดนี้ฉันได้แก้ไขกราฟิกเพื่อแสดงสิ่งนี้
ตัวอย่าง ASYNCHRONOUS
ในการแก้ปัญหาทางวิศวกรรมซอฟต์แวร์ถูกออกแบบมาเพื่อแบ่งปัญหาโดยรวมออกเป็นหลาย ๆ งานแล้วดำเนินการแบบอะซิงโครนัส อินเวอร์เตอร์เมทริกซ์หรือปัญหาการวิเคราะห์องค์ประกอบ จำกัด เป็นตัวอย่างที่ดี ในการคำนวณการเรียงลำดับรายการเป็นตัวอย่าง ยกตัวอย่างเช่นรูทีน quicksort แยกรายการออกเป็นสองรายการและดำเนินการ quicksort สำหรับแต่ละรายการเรียกตัวเอง (quicksort) แบบเรียกซ้ำ ในตัวอย่างข้างต้นทั้งสองงานสามารถดำเนินการแบบอะซิงโครนัสได้ พวกเขาไม่จำเป็นต้องอยู่ในหัวข้อแยก แม้แต่เครื่องที่มี CPU หนึ่งตัวและสามารถประมวลผลเธรดเดียวเท่านั้นเพื่อเริ่มการประมวลผลของงานที่สองก่อนที่เครื่องแรกจะเสร็จสมบูรณ์ เกณฑ์เดียวคือผลลัพธ์ของงานหนึ่งไม่จำเป็นต้องใช้เป็นอินพุตของงานอื่น. ตราบใดที่เวลาเริ่มต้นและสิ้นสุดของงานทับซ้อนกัน (เป็นไปได้เฉพาะในกรณีที่เอาต์พุตของทั้งสองไม่จำเป็นต้องใช้เป็นอินพุตไปยังอีก) มันจะถูกดำเนินการแบบอะซิงโครนัสไม่ว่าจะใช้เธรดจำนวนเท่าใดก็ตาม
ตัวอย่างซิงโครนัส:
กระบวนการใด ๆ ที่ประกอบด้วยหลายงานที่ต้องดำเนินการตามลำดับ แต่ต้องดำเนินการในเครื่องอื่น (ดึงข้อมูลและ / หรืออัปเดตข้อมูลรับใบเสนอราคาจากบริการทางการเงิน ฯลฯ ) หากอยู่ในเครื่องแยกต่างหากจะอยู่ในเธรดแยกต่างหากไม่ว่าจะเป็นแบบซิงโครนัสหรือแบบอะซิงโครนัส
ในแง่ง่ายกว่า:
พร้อมกัน
คุณอยู่ในคิวเพื่อรับตั๋วหนัง คุณไม่สามารถรับได้จนกว่าทุกคนที่อยู่ข้างหน้าคุณจะได้รับหนึ่งและเช่นเดียวกับผู้ที่อยู่ในคิวของคุณ
ไม่ตรงกัน
คุณอยู่ในร้านอาหารที่มีคนอื่นมากมาย คุณสั่งอาหารของคุณ คนอื่นสามารถสั่งอาหารได้โดยไม่ต้องรอให้อาหารของคุณปรุงและเสิร์ฟให้คุณก่อนที่จะสั่ง ในห้องครัวพนักงานร้านอาหารกำลังทำอาหารให้บริการและรับออเดอร์อย่างต่อเนื่อง ผู้คนจะได้รับอาหารของพวกเขาทันทีที่ปรุง
การดำเนินการแบบซิงโครนัส
เจ้านายของฉันเป็นคนไม่ว่าง เขาบอกให้ฉันเขียนรหัส ฉันบอกเขาว่า: สบายดี ฉันเริ่มต้นและเขาดูฉันเหมือนอีแร้งยืนอยู่ข้างหลังฉันจากไหล่ของฉัน ฉันชอบ "Dude, WTF: ทำไมคุณไม่ไปและทำอะไรบางอย่างในขณะที่ฉันเสร็จสิ้น"
เขาชอบ: "ไม่ฉันกำลังรอที่นี่จนกว่าคุณจะเสร็จสิ้น" นี่คือซิงโครนัส
การดำเนินการแบบอะซิงโครนัส
เจ้านายบอกให้ฉันทำและแทนที่จะรออยู่ที่นั่นเพื่อทำงานเจ้านายจะออกไปทำงานอื่น เมื่อฉันทำงานให้เสร็จฉันก็ไปรายงานตัวหัวหน้าและพูดว่า: "ฉันทำไปแล้ว!" นี่คือการดำเนินการแบบอะซิงโครนัส
(รับคำแนะนำของฉัน: ไม่ควรทำงานกับเจ้านายที่อยู่ข้างหลังคุณ)
การทำงานแบบซิงโครนัสหมายถึงการทำงานที่เกิดขึ้นในซีรีส์เดียว A->B->C->D
. หากคุณกำลังเรียกรูทีนเหล่านั้นA
จะทำงานแล้วเสร็จจากนั้นB
จะเริ่มจากนั้นจึงเสร็จสิ้นจากนั้นC
จะเริ่มเป็นต้น
ด้วยการประมวลผลแบบอะซิงโครนัสคุณจะเริ่มรูทีนและปล่อยให้มันทำงานในพื้นหลังในขณะที่คุณเริ่มต้นครั้งต่อไปจากนั้นในบางจุดพูดว่า "รอให้เรื่องนี้เสร็จสิ้น" มันเหมือน:
เริ่มต้น A->B->C->D->
รอสำหรับการA
ให้เสร็จ
ประโยชน์คือการที่คุณสามารถดำเนินการB
, C
และหรือD
ในขณะที่A
ยังคงทำงานอยู่ (ในพื้นหลังในหัวข้อที่แยกต่างหาก) เพื่อให้คุณสามารถใช้ประโยชน์จากทรัพยากรที่ดีขึ้นของคุณและมีน้อย "แฮงค์" หรือ "รอ"
สรุปตรงกันหมายถึงสองคนหรือมากกว่ากระบวนการจุดเริ่มต้นและจุดสิ้นสุดจุดไม่ได้ของพวกเขาประหารชีวิต ในตัวอย่างนี้จุดสิ้นสุดของกระบวนการ A ถูกซิงโครไนซ์กับจุดเริ่มต้นของกระบวนการ B:
พร้อมกัน | -------- -------- | | -------- B -------- |
กระบวนการอะซิงโครนัสในทางกลับกันไม่มีการซิงโครไนซ์จุดเริ่มต้นและจุดสิ้นสุด:
ไม่ตรงกัน | -------- -------- | | -------- B -------- |
โดยที่ Process A คาบเกี่ยวกันกับกระบวนการ B พวกเขากำลังทำงานพร้อมกันหรือแบบซิงโครนัส (คำจำกัดความของพจนานุกรม) ดังนั้นความสับสน
UPDATE: Charles Bretana ปรับปรุงคำตอบของเขาดังนั้นคำตอบนี้จึงเป็นเพียงตัวช่วยจำที่เรียบง่าย
ซิงโครนัสหมายความว่าผู้โทรรอการตอบกลับหรือเสร็จสมบูรณ์อะซิงโครนัสที่ผู้โทรดำเนินการต่อและการตอบกลับจะมาในภายหลัง (ถ้ามี)
ตัวอย่างเช่น:
static void Main(string[] args)
{
Console.WriteLine("Before call");
doSomething();
Console.WriteLine("After call");
}
private static void doSomething()
{
Console.WriteLine("In call");
}
สิ่งนี้จะเป็น ouput เสมอ:
Before call
In call
After call
แต่ถ้าเราต้องทำบางอย่างแบบอะซิงโครนัส (หลายวิธีที่จะทำ) ผลลัพธ์ก็อาจกลายเป็น:
Before call
After call
In call
เพราะวิธีการโทรแบบอะซิงโครนัสจะดำเนินการต่อด้วยบรรทัดถัดไปของรหัสทันที ฉันพูดว่า "ทำได้" เพราะไม่สามารถรับประกันการสั่งการกับการดำเนินการ asynch ได้ มันสามารถดำเนินการตามต้นฉบับโดยขึ้นอยู่กับการกำหนดเวลาของเธรดและอื่น ๆ
ฉันคิดว่านี่เป็นคำอธิบายรอบ ๆ เล็กน้อย แต่ก็ยังคงความกระจ่างโดยใช้ตัวอย่างชีวิตจริง
ตัวอย่างเล็ก ๆ :
สมมติว่าการเล่นเสียงเกี่ยวข้องกับสามขั้นตอน:
หากเครื่องเล่นเสียงของคุณทำตามขั้นตอน 1,2,3 ตามลำดับสำหรับทุกเพลง คุณจะต้องรอสักครู่เพื่อฟังเพลงจนกว่าเพลงจะดึงข้อมูลและคลายการบีบอัด
หากเครื่องเล่นเสียงของคุณทำตามขั้นตอนที่ 1,2,3 โดยไม่ขึ้นต่อกันแสดงว่าเป็นแบบอะซิงโครนัส กล่าวคือ ในขณะที่เล่นเสียง 1 (ขั้นตอนที่ 3) หากดึงข้อมูลเสียง 3 จากฮาร์ดดิสก์ในแบบขนาน (ขั้นตอนที่ 1) และจะขยายเสียง 2 ในแบบขนาน (ขั้นตอนที่ 2) คุณจะได้ฟังเพลงโดยไม่ต้องรอเพื่อรับและขยายขนาด
การดำเนินการซิงค์และ async เป็นเรื่องเกี่ยวกับการดำเนินการสั่งซื้องานใหม่ที่เกี่ยวข้องกับงานปัจจุบัน สองงานบนโต๊ะ: งานปัจจุบันและงานใหม่
ซิงโครนัส (การบล็อก) - แสดงถึงว่างานจะถูกดำเนินการทีละรายการ งานถัดไปจะเริ่มขึ้นหลังจากงานก่อนหน้านี้เสร็จสิ้น Task 2
ยังไม่เริ่มจนกว่าTask 1
จะเสร็จสิ้น
แบบอะซิงโครนัส (ไม่ใช่การปิดกั้น) - บอกเป็นนัย ๆ ว่างานคืนการควบคุมทันทีโดยมีสัญญาให้รันโค้ดและแจ้งเตือนเกี่ยวกับผลลัพธ์ในภายหลัง (เช่นการโทรกลับคุณสมบัติ) Task 2
จะถูกดำเนินการแม้ว่าTask 1
จะยังไม่เสร็จสิ้น
ดังนั้นคำตอบเกี่ยวกับการซิงค์และ async: ใน iOS , ใน Android
กล่าวง่ายๆว่าการดำเนินการแบบอะซิงโครนัสกำลังทำสิ่งต่าง ๆ อยู่เบื้องหลัง
ตัวอย่างเช่นหากคุณต้องการดาวน์โหลดไฟล์จากอินเทอร์เน็ตคุณอาจใช้ฟังก์ชันซิงโครนัสเพื่อทำเช่นนั้น แต่จะบล็อกเธรดของคุณจนกว่าไฟล์จะดาวน์โหลดเสร็จ สิ่งนี้สามารถทำให้แอปพลิเคชันของคุณไม่ตอบสนองต่อการป้อนข้อมูลของผู้ใช้
แต่คุณสามารถดาวน์โหลดไฟล์ในพื้นหลังโดยใช้วิธีอะซิงโครนัส ในกรณีนี้ฟังก์ชั่นการดาวน์โหลดจะกลับมาทันทีและการทำงานของโปรแกรมจะดำเนินต่อไปตามปกติ การดาวน์โหลดทั้งหมดจะทำในพื้นหลังและโปรแกรมของคุณจะได้รับแจ้งเมื่อเสร็จสิ้น
เป็นตัวอย่างง่ายๆ
พร้อมกัน
ลองนึกภาพนักเรียนโรงเรียน 3 คนได้รับคำสั่งให้วิ่งแข่งวิ่งบนถนน
นักเรียนคนที่ 1 วิ่งตามระยะทางที่กำหนดหยุดและส่งไม้เท้าไปยังอันดับ 2 ไม่มีใครเริ่มทำงาน
1------>
2.
3.
เมื่อนักเรียนคนที่สองดึงกระบองเธอเริ่มวิ่งตามระยะทางที่กำหนด
1.
2------>
3.
นักเรียนคนที่ 2 ได้เชือกผูกรองเท้าของเธอ ตอนนี้เธอหยุดแล้วผูกอีกครั้ง ด้วยเหตุนี้เวลาสิ้นสุดของ 2nd ได้ถูกขยายออกไปและเวลาเริ่มต้นของ 3rd ได้ล่าช้า
1.
--2.--->
3.
รูปแบบนี้จะดำเนินต่อไปจนถึงครั้งที่ 3 ที่ดึงกระบองจากวันที่ 2 และจบการแข่งขัน
ไม่ตรงกัน
แค่ลองนึกภาพคน 10 คนที่เดินบนถนนสายเดียวกัน พวกเขาไม่ได้อยู่ในคิวแน่นอนเพียงแค่เดินไปตามสถานที่ต่าง ๆ บนถนนในแบบที่แตกต่างกัน
เชือกผูกรองเท้าของคนที่ 2 หลุดออกมา เธอหยุดที่จะรับมันขึ้นมาอีกครั้ง
แต่ไม่มีใครรอให้เธอผูกมันไว้ คนอื่นยังคงเดินแบบเดียวกับที่พวกเขาเคยทำมาก่อน
10--> 9-->
8--> 7--> 6-->
5--> 4-->
1--> 2. 3-->
ฉันสร้าง gif เพื่ออธิบายสิ่งนี้หวังว่าจะเป็นประโยชน์: ดู, บรรทัดที่ 3 เป็นแบบอะซิงโครนัสและอื่น ๆ แบบซิงโครนัส ทุกบรรทัดก่อนบรรทัดที่ 3 ควรรอจนกระทั่งก่อนที่บรรทัดจะทำงานเสร็จ แต่เนื่องจากบรรทัดที่ 3 เป็นแบบอะซิงโครนัสบรรทัดถัดไป (บรรทัดที่ 4) อย่ารอให้บรรทัดที่ 3 แต่บรรทัดที่ 5 ควรรอให้บรรทัดที่ 4 ทำงานให้เสร็จ และบรรทัดที่ 6 ควรรอสาย 5 และ 7 สำหรับ 6 เนื่องจากบรรทัด 4,5,6,7 ไม่ใช่แบบอะซิงโครนัส
เมื่อดำเนินการตามลำดับเช่น: a> b> c> d> หากเราพบความล้มเหลวในระหว่างการดำเนินการเช่น:
a
b
c
fail
จากนั้นเราเริ่มต้นใหม่ตั้งแต่ต้น:
a
b
c
d
นี่คือซิงโครนัส
อย่างไรก็ตามหากเรามีลำดับเดียวกันในการดำเนินการ: a> b> c> d> และเรามีความล้มเหลวตรงกลาง:
a
b
c
fail
... แต่แทนที่จะรีสตาร์ทตั้งแต่ต้นเราเริ่มต้นใหม่จากจุดที่ล้มเหลว:
c
d
... สิ่งนี้รู้ว่าไม่ตรงกัน
คุณกำลังสับสนกับซิงโครนัสกับ Parallel vs Series ซิงโครนัสหมายถึงทั้งหมดในเวลาเดียวกัน Syncronized หมายถึงเกี่ยวข้องกับกันและกันซึ่งอาจหมายถึงในซีรีส์หรือในช่วงเวลาคงที่ ในขณะที่โปรแกรมกำลังทำทุกอย่างมันจะทำงานเป็นอนุกรม รับพจนานุกรม ... นี่คือเหตุผลว่าทำไมเราถึงไม่ดื่มชา คุณมีชาหรือชาที่มีรสหวาน
โดยทั่วไปแล้วซิงโครนัสหมายความว่าคุณสามารถดำเนินการได้ครั้งละหนึ่งสิ่งเท่านั้น แบบอะซิงโครนัสหมายความว่าคุณสามารถดำเนินการหลาย ๆ อย่างในเวลาเดียวกันและคุณไม่จำเป็นต้องดำเนินการสิ่งปัจจุบันให้เสร็จเพื่อที่จะไปยังสิ่งต่อไป
ใช้ตัวอย่างคำแนะนำในการทำอาหารเช้า
หากคุณมีประสบการณ์การทำอาหารคุณจะต้องดำเนินการตามคำแนะนำแบบอะซิงโครนัส คุณจะเริ่มอุ่นกระทะสำหรับไข่แล้วเริ่มเบคอน คุณใส่ขนมปังลงในเครื่องปิ้งขนมปังแล้วเริ่มไข่ ในแต่ละขั้นตอนของกระบวนการคุณจะเริ่มงานแล้วหันความสนใจไปที่งานที่พร้อมสำหรับความสนใจของคุณ
การทำอาหารเช้าเป็นตัวอย่างที่ดีของการทำงานแบบอะซิงโครนัสที่ไม่ขนานกัน หนึ่งคน (หรือเธรด) สามารถจัดการงานเหล่านี้ได้ทั้งหมด การเปรียบเทียบอาหารเช้าต่อเนื่องคน ๆ หนึ่งสามารถทำอาหารเช้าแบบอะซิงโครนัสได้โดยเริ่มงานต่อไปก่อนที่จะเสร็จสมบูรณ์ก่อน การปรุงอาหารดำเนินต่อไปไม่ว่าจะมีคนดูอยู่หรือไม่ก็ตาม ทันทีที่คุณเริ่มอุ่นกระทะสำหรับไข่คุณสามารถเริ่มทอดเบคอน เมื่อเบคอนเริ่มต้นคุณสามารถใส่ขนมปังลงในเครื่องปิ้งขนมปัง
สำหรับอัลกอริทึมแบบขนานคุณจะต้องมีพ่อครัวหลายคน (หรือหลายเธรด) อย่างใดอย่างหนึ่งจะทำให้ไข่หนึ่งเบคอนและอื่น ๆ แต่ละคนจะมุ่งเน้นไปที่งานนั้น แต่ละคนทำอาหาร (หรือเธรด) จะถูกบล็อกพร้อมกันรอให้เบคอนพร้อมที่จะพลิกหรือขนมปังปิ้งจะปรากฏ
อ้างอิงจากแนวคิดการโปรแกรมมิงแบบอะซิงโครนัส
การดำเนินการแบบซิงโครนัสจะทำงานก่อนที่จะกลับไปที่ผู้โทร
การดำเนินการแบบอะซิงโครนัส (ส่วนใหญ่หรือทั้งหมด) ทำงานหลังจากกลับไปที่ผู้โทร
เกี่ยวกับคำจำกัดความ "ในเวลาเดียวกัน " ของการดำเนินการแบบซิงโครนัส (ซึ่งบางครั้งทำให้เกิดความสับสน) นี่เป็นวิธีที่ดีในการทำความเข้าใจ:
การดำเนินการแบบซิงโครนัส : งานทั้งหมดภายในบล็อกของรหัสจะถูกดำเนินการทั้งหมดในเวลาเดียวกัน
การดำเนินการแบบอะซิงโครนัส : งานทั้งหมดภายในบล็อกของรหัสไม่ได้ดำเนินการทั้งหมดในเวลาเดียวกัน
ฉันคิดว่าวิธีที่ดีในการคิดว่ามันคือ Relay Race แบบคลาสสิก
ซิงโครนัส : กระบวนการเช่นเดียวกับสมาชิกในทีมเดียวกันพวกเขาจะไม่ดำเนินการจนกว่าพวกเขาจะได้รับ baton (สิ้นสุดการดำเนินการตามกระบวนการ / นักวิ่งก่อนหน้า) และพวกเขาทั้งหมดทำหน้าที่ซิงค์กัน
อะซิงโครนัส : ที่กระบวนการต่าง ๆ เช่นสมาชิกของทีมต่าง ๆ บนแทร็กเรซแทร็กเดียวกันพวกเขาจะวิ่งและหยุด async กัน แต่ในการแข่งขันเดียวกัน (การดำเนินการของโปรแกรมโดยรวม)
มันสมเหตุสมผลหรือไม่
คำจำกัดความภาษาอังกฤษอื่นของการซิงโครไนซ์อยู่ที่นี่
ประสานงาน; รวมกัน.
ฉันคิดว่านั่นเป็นคำนิยามที่ดีกว่า "การเกิดขึ้นในเวลาเดียวกัน" อันนั้นก็เป็นคำจำกัดความ แต่ฉันไม่คิดว่ามันเป็นสิ่งที่เหมาะกับวิธีที่ใช้ในวิทยาการคอมพิวเตอร์
ดังนั้นงานอะซิงโครนัสจึงไม่ได้ประสานงานกับงานอื่นในขณะที่งานซิงโครนัสจะประสานงานกับงานอื่นดังนั้นงานหนึ่งจึงเสร็จสิ้นก่อนที่งานอื่นจะเริ่ม
คำถามนั้นแตกต่างกันอย่างไร
ซิงโครนัสหมายถึงการดำเนินการคิววิธีหนึ่งโดยหนึ่งงานจะถูกดำเนินการ สมมติว่ามียานพาหนะที่ต้องแบ่งปันระหว่างเพื่อนเพื่อไปยังปลายทาง
ในกรณีแบบอะซิงโครนัสเพื่อนแต่ละคนจะได้รับรถเช่าและไปถึงปลายทาง
ใช่หมายถึงแบบซิงโครนัสในเวลาเดียวกันหมายถึงการทำงานด้วยกันทั้งหมด มนุษย์หลายคน / วัตถุในโลกสามารถทำสิ่งต่าง ๆ ได้หลายอย่างในเวลาเดียวกัน แต่ถ้าเราดูที่คอมพิวเตอร์มันบอกว่าซิงโครนัสหมายถึงกระบวนการที่ทำงานร่วมกันซึ่งหมายความว่ากระบวนการนั้นขึ้นอยู่กับการกลับมาของอีกคนหนึ่ง หลังจากนั้นในลำดับที่เหมาะสม ในขณะที่อะซิงโครนัสหมายถึงกระบวนการที่ไม่ทำงานร่วมกัน แต่อาจทำงานในเวลาเดียวกัน (ถ้าใช้แบบมัลติเธรด) แต่ทำงานได้อย่างอิสระ