THREAD คือการทำ Multi Processing ระดับ sub routine

พูดแล้วงง เด๋วยกตัวอย่างปัญหาเลยละกัน
ผมมีรายชื่อสาวไฮ5 อยู่ปามาน 10 นาง

ผมต้องการเขียนโปรแกรมไปโพสคอมเม้น สาวเหล่านี้
จะโพสทีละคน มันช้าาาา ไม่ทันใจ
ผมอยากจะโพส ทีละ 3
เป็นปริมาณที่เน็ตบ้านนอกบ้านผม มันรับได้พอดีเลย
ผมจึงต้องใช้ Thread มาช่วยในการทำงาน

ซึ่งจะสามารถ share data คือ variable ได้

เราจะกำหนดตัวแปร running คือตัวระบุว่า ตอนนี้มี thread รันอยู่กี่ตัว

เสร็จแล้วใน loop เราก็จะสร้าง async บล๊อกขึ้นมา มันคือการสร้าง thread ใหม่แบบง่ายๆ
แต่ถ้าอยากใช้ฟังก์ชั่น ก็ต้องใช้ new thread &sub ปามานนี้เลย ไว้มาเขียนคราวหน้า
เอาตัวอย่างไปก่อนนะครับ ไปลองรันดู

ผมจะเก็บลิสต์สาวๆ ด้วยการ enqueue การทำแบบนี้ thread จะสามารถเขียนอ่านจากคิวได้

สรุปคือ queue = joblist

มาเข้าตัวอย่างกันเลย

[hide=5][code]
use Thread qw(async);
use Thread::Queue;
my $q = new Thread::Queue;
my $running:shared;
$running = 0;

# กำหนดรายชื่อสาวๆ
@girls = qw(joy apple fern kaofang fon nun toey ratchy luktan);
foreach $i (@girls) {