วันพุธที่ 27 มิถุนายน พ.ศ. 2555

ทำให้ VFP ทำงานแบบ Multithread ด้วย ParellelFox


Simple 3 Steps to create and manage a thread in VFP

1.) oThreadMgr=NEWOBJECT("ThreadManager","threads.fxp")

2.) oThreadMgr.CreateThread("MyThreadFunc","myparameter",[MESSAGEBOX("My thread done!","Result")],[? "processing..."])
Param 1 - your code that will run in a background thread (in this example, MyThreadFunc)
Param 2 (optional) - any parameter you want to pass to your code (can pass multiple parameters separated by commas)
Param 3 (optional) - code that will run when your thread completes
Param 4 (optional) - code that will run in the foreground while your thread is processing (you could possibly add a progress bar here like the one in ctl32progressbar in VFPX)

3.) Other methods of the MT class:
oThreadMgr.SendMsgToStopThreads() - stop the threads
oThreadMgr.SuspendThreads() - pause the threads
oThreadMgr.ResumeThreads() - resume the threads

http://mtmyvfp.codeplex.com/


อธิบายตามคุณ NAS จากประเด็น Multitask กับ Multithread ต่างกันยังไง ดังนี้

Thread = โพรเซสขนาดเล็ก (Light Process) ที่ทำหน้าที่เฉพาะเจาะจงบางอย่างตามที่ผู้เขียนต้องการ
MultiThread = กลุ่มของโพรเซสขนาดเล็กที่ทำงานร่วมกันใต้แอพพลิเคชั่นหนึ่งๆ เช่น แอพพลิเคชั่น Word, IE, ...

หากคุณเปิด Task Manager ขึ้นมาดู จะพบ Thread อยู่ในกรอบสี่เหลี่ยมสีแดงตัวบนครับ
ส่วน Processes ด้านล่าง อุปมาอุปมัยได้ว่าเป็นจำนวนของแอพพลิเคชั่นดังภาพ



จะเห็นว่าตอนนี้มีจำนวน Thread ทั้งหมดคือ 700 และแอพพลิเคชั่นต่างๆ รวมกันทั้งหมด 73 ตัว เมื่อผมเปิด IE ขึ้นมาใหม่อีก 1 ตัว จำนวน Thread และแอพพิเคชั่นจะเป็นดังภาพด้านล่าง



จะเห็นว่าจำนวนแอพพลิเคชั่นเพิ่มขึ้นมา 1 ตัว ซึ่งมันก็คือ IE ที่ผมเปิดขึ้นมานั่นเอง
และ IE ตัวนี้ก็ใช้ Thread ทั้งหมด 713-700 = 13 ตัวมาทำงานร่วมกันครับ

MultiTasking เป็นคุณสมบัติที่ไมโครซอฟต์คุยไว้ตั้งแต่แรกๆ ครับว่า OS ของเค้านี้สามารถอนุญาตให้แอพพลิเคชั่นหลายๆ ตัวทำงานพร้อมๆ กันได้ในเวลาเดียวกัน ซึ่งหากคุณไปดูที่แท็ป Applications ของ Task Manager คุณจะพบว่ามีแอพพลิเคชั่นอยู่หลายๆ ตัวที่ทำพร้อมๆ กันในตอนนี้ดังภาพ



ดังนั้น สมมติว่าระบบงานเราต้องนำเข้าไฟล์ 5 ไฟล์ สมมติมีไฟล์ A - E เวลาทำงานก็จะนำเข้าทีละไฟล์ตามลำดับ แต่ ParallelFox จะทำให้เราสามารถนำเข้าไฟล์ทั้ง 5 ได้พร้อมๆ กัน อะไรประมาณนั้นครับ...

ว่าด้วยเรื่องเจ้านายและลูกน้อง




10 ปรัชญาการทำงานและดำเนินชีวิต


1 ใน 10 คุณทำได้หรือเปล่า

1.รู้น้อยไม่เกี่ยงงาน เพราะคนเราหากมีความรู้น้อยต้องไม่ท้อถอย หรือเลือกงาน เพราะการทำงาน คือหนทางเพิ่มความรู้และประสบการณ์

2.เรียนรู้สิ่งใด... ต้องเรียนรู้จากคน เรื่องราวทุกอย่าง...คนเป็นผู้สร้างสรรค์ขขึ้น.. ดังนั้นถ้าต้องการเรียนรู้สิ่งใดให้เรียนรู้จากคน ซึ่งล้วนเป็นขุมทรัพย์แห่งความรู้และประสบการณ์

3.ทบทวนอดีต ศึกษาปัจจุบันเพื่อวางอนาคต การทบทวนประสบการณ์จากอดีตทั้งของตนเองและผู้อื่น และการศึกษาเรื่องราวจากคน และสิ่งรอบข้างในปัจจุบัน เป็นแนวทางให้เราวางอนาคตได้ถูกต้องแม่นยำยิ่งขึ้น

4.เร็ว ช้า หนัก เบา ในการทำงานเราควรหมั่นพิจารณาอยู่เสมอว่า งานไหนทำก่อน..(เร็ว)  งานไหนทำหลัง..(ช้า)  งานไหนต้องจริงจัง..(หนัก)   งานไหนต้องพอควร..(เบา)

5.ความสำเร็จต้องเป็นของผู้พากเพียง อยากประสบความสำเร็จในชีวิตการงาน จ้องพาตัวเข้าหางาน อย่าคอยให้งานเข้าหาตัว เพราะงานคือ ทุกอย่างในชีวิต ที่เราต้องพากเพียรและพยายามต่อไป

6.เข็มเล่มหนึ่ง ไม่มีปลายแหลมสองด้าน ทุกคนมี่ทั้งจุดเด่นและจุดด้อย คนเราไม่มีใครที่ไหนจะเก่งไปหมดทุกเรื่อง เปรียบเสมือนเข็มที่มีปลาย เย็บ ปะ ชุน ได้เพียงด้านเดียว ฉะนั้นคนเราควรทบทวนจุดเด่นและจุดด้อยของตนเองอยู่เสมอ

7.หมั่นเล่า เพื่อสร้างความจำ หมั่นซัก เพื่อสร้างความรู้ เมื่อได้เรียนรู้สิ่งใดแล้วหมั่นถ่ายทอดให้กับผู้อื่นได้รับรู้ด้วย จะช่วยให้เราจำได้ดียิ่งขึ้น เมื่อเราไม่รู้สิ่งใด ก็อย่าอายที่จะถาม เพราะจะช่วยให้เรารู้ได้มากขึ้น ในขณะที่คนโอ้อวดว่า รู้หมดแล้ว แท้จริง คือ คนที่ไม่รู้อะไรเลย

8.ความรัก เป็นความสุข เหนือทรัพย์สินเงินทอง คนที่มีความรักมีจิตใจดี และมองโลกในแง่ดี จะมีความสุขยิ่งกว่าสิ่งใด ๆ

9.ตักน้ำเต็มได้แค่ภาชนะบรรจุเท่านั้น ในการดำเนินธุรกิจ ถ้ารู้จักแบ่งปันผลประโยชน์ให้ผู้อื่น หรือสังคม รวมทั้งจ่ายภาษีให้รัฐได้พัฒนาประเทศอย่างเต็มที่ ธุรกิจจะเจริญรุ่งเรืองขยายกิจการใหญ่ขึ้นได้

10.ไม่มีใครเคยตายเพราะงานหนัก ในการทำงานให้ยึดหลักว่า ทำเข้าไปเถิดสิ่งที่ว่ายากเพราะยิ่งทำสิ่งที่ยากมาก หรือ หนักมาก ก็ยิ่งรู้มาก