- master กำหนดให้เป็นเครื่อง server ที่รับ connection มาจาก slave ซึ่งเป็นเครื่อง client
- master กับ slave ติดต่อผ่าน network ใช้ tcp protocol
- master เป็น process หลัก 1 process
- master มี register thread ไว้รอรับ connection จาก slave ได้ตลอดเวลา
- ถ้าในโปรแกรมยาก B, register threads เปิด port 5555 (ชื่อ port 5555 ครับ อิอิ) ไว้รอรับ slave ตลอดเวลา, master สามารถไปทำคำสั่งอื่นได้
- ถ้าในโปรแกรมง่าย A, register threads จะเปิดเฉพาะตอนเริ่มโปรแกรม หลังจากครบ 4 ก็จะบล๊อก
- เมื่อมี slave เข้ามาขอ register, register threads จะสร้าง threads ย่อยเพื่อใช้สื่อสารกับ slave คนนั้นเช่น thread สื่อสาร 1 เอาไว้ติดต่อกับ slave 1, thread สื่อสาร 2 เอาไว้ติดต่อกับ slave 2
- ภายในโปรแกรม master เวลาที่ master จะสั่งงาน thread สื่อสารย่อย ต่างๆ จะใช้วิธีเรียก function โดยตรง เพราะ process และ threads ถือว่าอยู่ในโปรแกรมเดียวกันสามารถเรียก function ตรงๆ ได้เลย
*** รูปที่ 2 การออกแบบ master อธิบายด้านโปรแกรมมิ่ง ***
- master เป็น process หลัก ประกอบไปด้วย main, master, register threads และ slave threads
- main function ทำหน้าที่สร้าง master, master จะถูกสร้างขึ้น จนถึงขั้นตอน listen() และ accept() จะมีการแยก threads ไปทำต่างหาก เพื่อให้โปรแกรมสามารถ listen() ได้ตลอดเวลา
- ถ้ามี slave เขามา register ที่ listen() ไว้ ก็จะมีการสร้าง threads สื่อสารสำหรับ slave นั้น
- ที่ main function ถ้า user สั่งงาน มันจะไปสั่งงานต่อที่ master ซึ่งก็มีฟังก์ชั่นต่างๆ ตามที่โจทย์กำหนด list(), runcode(), ... แล้ว master ก็จะไปสั่งงานต่อที่ slave threads ทุกๆ ตัว
- จากนั้น slave thread ก็จะส่งคำสั่งผ่าน tcp network ไปหา slave แล้ว slave ก็จะตอบผลกลับมา
ยังเหลือการออกแบบ slave.... to be continue ครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น