Sabtu, 17 November 2012

program sederhana yang menggunkana thread

Deskriptif dari program ini merupakan pemrograman berbasis console, dimana user bisa menghentikan proses dengan menekan tombol ”q” atau “Q”. Proses yang sedang terjadi dijalankan melalui sebuah Thread dan proses menunggu juga dilakukan dalam Thread.
import std.thread;
import std.stdio;
import std.c.stdio;
import std.date;
// Thread proses utama ....
class mythread:Thread
{
        private char [] d_name = "";
        private long d_nloop = 10;
        private bool d_stop = false;
        this(char [] name, long nloop)
        {
                super();
                writefln(name ~ " called");
                this.d_name = name;
                this.d_nloop = nloop;
        }

        override public int run()
        {
                long i = 0;
                for(i=0;(i<this.d_nloop && (!d_stop));i++)
                {
                 //writefln(d_name ~ " called again ");                    
                }
                if( d_stop )
                 writefln(d_name ~ " stopped by user in "
                 ~ std.string.toString(i) ~ " times of loop");
                else
                        writefln(d_name ~ " Finished ..." ~ std.string.toString(d_nloop));
                return 0;
        }

        public void stopIt()
        {
                d_stop = true;
        }
}
// thread untuk menunggu pengguna menekan q atau Q
class UserToStopAllThread: Thread
{
        private bool d_stop = false;
        this()
        {
                super();
        }

        override public int run()
        {
                while(!d_stop)
                {
                        char ch = getch();
                        if(ch == 'q' || ch == 'Q')
                                break;
                }
                return 0;
        }

        public void stopIt()
        {
                d_stop = true;
        }
}
// ini adalah Thread utama ....
void main(char [][] args)
{
        int i = 0;
        mythread a = new mythread("A", 9999999999999);

        writefln("Tekan q untuk menghentikan proses ....");
        UserToStopAllThread utsa = new UserToStopAllThread;
        a.start();
        utsa.start();

        while(a.getState() == Thread.TS.RUNNING && utsa.getState() == Thread.TS.RUNNING)
        {
                // tunggu sampai a selesai atau user menekan tombol 'Q' or 'q'
        }
        if(a.getState() == Thread.TS.RUNNING) a.stopIt(); // pastikan berhenti
        if(utsa.getState() == Thread.TS.RUNNING) utsa.stopIt(); // pastikan berhenti
}
Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

0 komentar: on "program sederhana yang menggunkana thread"

Posting Komentar