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 ได้พร้อมๆ กัน อะไรประมาณนั้นครับ...
|
|
|
|
|
|
|
|
ผมความรู้ไม่ถึง เลยไม่เข้าใจอะ เอาแบบบ้าน ๆ มันเอาไปทำประโยชน์อย่างไรครับ พอจะยกตัวอย่าง application สักตัวได้ไม๊ครับ ได้โปรด อิอิ
ตอบลบยกตัวอย่างประมาณ Bittorent ก็แล้วกันครับน่าจะเห็นชัดดี ปกติถ้าเขียนโปรแกรมแบบที่เราเขียนมันทำงานเป็นลำดับ โดยโหลดทีละไฟล์ๆ แต่การทำ Parallel ก็จะโหลดทุกไฟล์ได้พร้อมๆกันครับ ... ประมาณนั้น
ตอบลบ