Mengenal pemrograman multithread dengan Delphi 7

dokumen-dokumen yang mirip
PROSEDUR. Mahasiswa dapat memahami penggunaan prosedur. Mahasiswa dapat membuat prosedur. Mahasiswa dapat memahami variabel lokal dan variabel global

LABORATORIUM KOMPUTER TEKNIK INFORMATIKA STT DHARMA ISWARA MADIUN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK-1 PROCEDURE DAN FUNCTION

Minggu ke : 4 Penyusun : Dian Usdiyana Rini Marwati Materi : 4. Pernyataan Kondisional 4.1 If then. 4.2 If. then.else..

Pengenalan Borland Delphi 7.0

For <pencacah> := <nilaiawal> to <nilaiakhir> do <pernyataan>

Minggu ke : 7. Bentuk umum : While <kondisi> do <Pernyataan>

URAIAN POKOK PERKULIAHAN

LABORATORIUM KOMPUTER TEKNIK INFORMATIKA STT DHARMA ISWARA MADIUN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK-1 TIPE DATA DAN VARIABEL

PRAKTIKUM 3 BERBAGAI MACAM TIPE DATA

PRAKTIKUM 3 BERBAGAI MACAM TIPE DATA (Integer dan Real)

LABORATORIUM KOMPUTER TEKNIK INFORMATIKA STT DHARMA ISWARA MADIUN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK-1 LOGIKA PERULANGAN-1

PRAKTIKUM 1 2 MENGENAL DELPHI

URAIAN POKOK PERKULIAHAN

1 Latihan 6 Ketentuan Soal:

URAIAN POKOK PERKULIAHAN. (1) Nilai akar-akar, x 1 dan x 2, dapat ditentukan dengan menggunakan rumus:

PROSEDUR DENGAN PARAMETER. Mahasiswa dapat memahami penggunaan prosedur dengan parameter. Mahasiswa dapat membuat prosedur dengan parameter.

Modul I Mengenal Pemrograman Delphi

STRUCTURED QUERY LANGUAGE (SQL)

4.1 Struktur Rancangan Puncak-Turun dengan Procedure

Delphi 7. Merencang Program dengan Fungsi IF. Ketentuan Soal : 1. Jabatan : JABATAN GAJI POKOK Direktur Manager Staff

Modul I Mengenal Pemrograman Delphi

LABORATORIUM KOMPUTER TEKNIK INFORMATIKA STT DHARMA ISWARA MADIUN PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK-1 STRUKTUR KEPUTUSAN-1

ALGORITMA PENCARIAN. c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian.

MODUL 2 EVEN, VARIABEL DAN FUNGSI KONVERSI

Visual Delphi 7 D3 TI FMIPA UNS Sakroni

Borland Delphi 7. Created By 1

FieldName DataType FieldSize Status UserPass Text 40 Primary Key Nama_User Text 30 Password Text 10

PEMROGRAMAN DASAR XI TKJ SMK NEGERI 1 KUPANG

Bahasa Pemrograman (TD22093)

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, ExtDlgs, TeeProcs, TeEngine, Chart,

Elga Lesmana

Membuat File Dynamic Link Library (*.DLL) Menggunakan Borland Delphi

Object Name Caption. RadioButton1 rpria Pria RadioButton2 rwanita Wanita. ComboBox1 ckode - Edit1 enapar - Edit2 ehrg - Edit3 ejumbel - Edit4 etotal -

Pengenalan Lingkungan Delphi

PERCOBAAN 4 GRAFIKA KOMPUTER DENGAN DELPHI

Tutorial Lazarus Pemrograman Pascal Console, Visual dan Database Husni, husni.trunojoyo.ac.id, komputasi.wordpress.com

Algoritma Pemrograman A

PERCOBAAN I STATEMENT

Praktikum Pemrograman 1. Mengenal Delphi

Lampiran 1. Form 01. unit Skripsi; interface. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, math;

1. Menggambar ANAK PANAH. Setelah kita RUN dan saya klik button ANAK PANAH maka akan muncul gambar anak panah seperti nampak pada gambar dibawah ini

PEMROGRAMAN DATABASE DENGAN DELPHI DAN MICROSOFT ACCESS

Kontrol Data Set dan Navigasi Tabel

Kodingan untuk Membuat Grafik dari Persamaan Garis Lurus dan Kuadrat Menggunakan Delphi 7

BAB II LANDASAN TEORI

Gambar 2.1. Komponen yang digunakan. Gunakan komponen-komponen seperti pada gambar 2.1 untuk membuat form pada gambar 2.2.

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type

1. MENGENAL VISUAL BASIC

PEMROGRAMAN KOMPUTER KODE MODUL: TIN 202 MODUL IV PENGENALAN MICROSOFT VISUAL BASIC 6.0

LAMPIRAN A: LISTING PROGRAM

DASAR MENGGUNAKAN VISUAL BASIC 6.0

Pemrograman dengan C++ Builder 2004 Taryana S Pendahuluan C++ Builder adalah sebuah aplikasi yang digunakan untuk pengembangan dengan

LANJUTAN APLIKASI DATABASE

Pengantar Delphi (IDE Delphi ) & Konsep OOP

Bekerja dengan FORM dan EVENTS

Pertemuan -1 BORLAND DELPHI

BAB VIII Data Logging Tegangan melalui Komunikasi Serial

Identitas dosen POKOK BAHASAN. mendemonstrasikan tentang membuat project aplikasi dengan database access dengan benar (C3) Suherman,, ST Address

MODUL I. A. Instalasi Borland Delphi Buka file instalasi Borland Delphi Klik Run Program. 3. Klik Next

Modul Praktikum Ke-1

Yohanas auri yahoo.com

Pengenalan IDE Delphi. 1 By : Eko Budi Setiawan

GRAPHICS AND VISUALIZATION. Logo

MODUL IX PEMROGRAMAN DATABASE DENGAN DELPHI. Untuk praktikum ini kita menggunakan Ms. Access sebagai databasenya.

LAPORAN PRAKTIKUM FISIKA KOMPUTASI INTERPRETASI GRAFIS INTENSITAS WARNA DASAR RGB PADA GAMBAR BITMAP MENGGUNAKAN DELPHI7

DAFTAR PUSTAKA. Choiron, Moch. Agus. (tanpa tahun). Interpolasi. Malang.

LAMPIRAN A: DDL DATABASE

BAB IV Antarmuka dengan Port Paralel (Output)

BAB 2 LANDASAN TEORI. Istilah komputer ( computer ) berasal dari bahasa latin computere yang berarti

BAB I Pengenalan Microsoft Visual Basic 6.0

MEMBUAT APLIKASI DESKTOP DENGAN DATABASE ORACLE. UNIKOM (2010) Disusun Oleh : Andri Heryandi, M.T.

PEMRORAMAN DATA BASE (FORNT END)

Pemrogram Pem a rogram n Visual Delphi 7

Praktikum 6 SubForm dan Kode VBA

Pengenalan Visual Basic

LANJUTAN APLIKASI DATABASE

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

MODUL I. A. Landasan Teori. Modul Praktimum Pemrograman Visual II D3 Manajemen Informatika UNIJOYO

BAB I Pengenalan Microsoft Office Powerpoint 2007

Citra dalam Delphi. Setelah mempelajari materi ini, mahasiswa diharapkan mampu:

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET KOMUNIKASI DATA Komunikasi Client Server dengan Protokol TCP

BAB II LANDASAN TEORI

1.1 Mengenal Visual Basic (VB) 1.2 Mengenal Integrated Development Environment (IDE) VB 6

Mencari Akar-akar persamaan kuadrat AX 2 + BX + C = 0

Menggunakan grafik / chart pada Borland Delphi 7

BAB 2 LANDASAN TEORI. Perangkat lunak adalah perintah ( program komputer ) yang bila dieksekusi

Modul 3 Pembuatan Form dengan Wizard dan Penambahan kode VBA

Program Sekuensial VB 6 dan VB 2008

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET (KOMUNIKASI DATA)

BAB I SEKILAS VISUAL STUDIO.NET 2008

Bab I Pengenalan Visual BASIC

BAB IV IMPLEMENTASI DAN PENGUJIAN

MENU DAN TOOLBOX. Menu PopUp merupakan pengembangan dari menu yang ditampilkan di luar form, lepas dari menu bar.

Visual Basic 6.0 For Beginners

ANGKA TERBILANG. Program ini terdiri dari beberapa komponen yaitu:

Konsep I/O Programming

LAMPIRAN. Universitas Sumatera Utara

Modul 1. A. Bagian-Bagian Utama Delphi. Menu Utama. Toolbar / Speedbar ( kiri Delphi 5, kanan Delphi 7) Component Palette

KUPAS TUNTAS PEMROGRAMAN VISUAL BASIC 6.0. Dilengkapi penjelasan Coding. Oleh: Didin Muhidin. Copyright 2016 by DiesAlfatih.

Transkripsi:

Mengenal pemrograman multithread dengan Delphi 7 Oleh: Catur Budi Santoso Aplikasi dengan teknik multi-threading adalah aplikasi yang banyak kita temui di komputer kita sekarang ini, entah kita sadari atau tidak. Di aplikasi multithreading terdapat thread-thread yang berjalan paralel dalam processor. Artikel ini ditujukan bagi pengguna delphi yang telah mengenal delphi tapi belum terlalu mendalam dan belum mempunyai pengalaman dengan pemrograman muli-tthreading. Artikel ini juga saya publish di wordpress saya. Sekilas tentang Multi-Threading Aplikasi dengan teknik multi-threading adalah aplikasi yang banyak kita temui di komputer kita sekarang ini, entah kita sadari atau tidak. Di aplikasi multithreading terdapat beberapa thread yang berjalan paralel dalam processor. Lawan kata dari aplikasi multi-threading adalah aplikasi single threading yang menggunakan satu thread saja sehingga semua intruksi berjalan secara serial atau berurutan. Di delphi ketika kita membuat aplikasi otomatis terbuat aplikasi single-threading. Pemrograman multithreading sederhananya adalah pemrograman dengan membagi kumpulan-kumpulan kode kita kedalam thread-thread yang akan dijalankan secara paralel setelah aplikasinya dicompile. Masing-masing thread tersebut masih dapat saling berkomunikasi satu sama lainnya dengan sharing sumber daya memori iabel atau obyek. Process dan Thread Sebuah process adalah tempat/wadah thread berjalan. Proses diberi satu set sumber daya default yang berupa alokasi penggunaan processor dan memori oleh sistem operasi. Didalam process kita dapat membuat satu atau lebih thread. Thread-thread yang berada dalam satu proses dapat memakai sumber daya secara bersama-sama sehingga bisa ada proses komunikasi yang cepat. Bagaimana proses dan thread itu berjalan di core prosessor pembagian kerja prosesor untuk sebuah thread atau thread lainnya adalah urusan sistem operasi. Sebagai programmer kita biasanya tidak mengurusi hal-hal tersebut. Penerapan Multi-Threading

Dalam dunia pemrograman desktop dan mobile, pemrograman multithreading sangat banyak digunakan sementara dalam dunia web proses multithreading sangat sering terjadi tanpa kita menyadarinya. Misal multithreading terjadi ketika browser merender animasi java script sambil menerima data dari internet. Teknik multithreading sangat disarankan digunakan ketika kita membuat aplikasi game, aplikasi yang menangani file yang ukurannya relatif besar (untuk computer jaman ini kira-kira file yang lebih besar dari 10 MB), aplikasi yang secara intensif berhubungan dengan port komunikasi atau aplikasi yang berhubungan dengan database secara intensif (misal aplikasi yang terus menerus meminta query data untuk mebuat grafik realtime). Contoh perbandingan aplikasi single threading dan multi threading sederhana di Delphi Untuk lebih jelasnya mari kita perhatikan contoh proyek aplikasi delphi berikut. Deskirpsi aplikasi: Keterangan file csv merupakan file spreadsheet yang tidak berformat yang bisa dibaca oleh software spreadsheet seperti ms-excel. Program ini pertama kali dibuat tanpa teknik multithreading. Kemudian ditangani dengan teknik multithreading agar terbayang bagaimana program multithreading menangani satu masalah yang ada di aplikasi single-threading. Membuat Aplikasi Single-threading Source file proyek single-threading 1. 2. 3. 4. Pertama kita buat proyek baru. Di proyek tersebut kita pasang sebuah button dan sebuah savedialog. Edit Caption pada button dengan nama Buat file. Edit filter pada save dialog seperti gambar berikut. 5. Kita buat kode seperti berikut. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform)

Button1: TButton; SaveDialog1: TSaveDialog; procedure Button1Click(Sender: TObject); private { Private declarations } procedure buatfilecsv(namafile:tfilename); public { Public declarations } Form1: TForm1; implementation uses Math; {$R *.dfm} { TForm1 } { TForm1 } procedure TForm1.buatFileCSV(namaFile: TFileName); isifile:tstrings; i,j:integer; nilaiacak:extended; text:string; isifile := TStringList.Create; for i := 1 to 200000 do text := 'No. ' + IntToStr(i); for j:=0 to 49 do nilaiacak := sqrt(10 * Random); nilaiacak := Round(nilaiAcak * 100) / 100; text := text + ',' + FloatToStr(nilaiAcak); isifile.add(text); isifile.savetofile(namafile); isifile.free; procedure TForm1.Button1Click(Sender: TObject); if SaveDialog1.Execute then buatfilecsv(savedialog1.filename + '.csv');

end. Kode diatas menggambarkan bagaimana kita menyisipkan prosedur buat file dengan nama buat file dan argumen bertipe TFileName di form di bagian private lalu kita panggil kode tersebut di bagian buttonclick dengan memanfaatkan savedialog. Keterangan: * TFileName adalah tipe data turunan dari string yang berfungsi untuk menuliskan path serta nama file. Tipe ini berada di library SysUtils. Biasakan menggunakan tipe ini daripada string ketika menulis nama file karena ada bebera[a fasilitas yang berguna di delphi pada tipe ini. ** Disini kita mengguanakan tipe TStrings (kelas abstract) dan TStringList (kelas turunan konkritnya) untuk mengelola dan menyimpan teks file. Bila anda belum terbiasa dengan tipe ini pelajarilah. Karena tipe ini sangat banyak digunakan di komponen delphi. Compile proyek ini dan akan tertampilkan form dengan button yang ketika kita klik akan menampilkan dialog save. Isi nama file dan perhatikan... Aplikasi akan membuat file csv sesuai dengan nama dan path yang kita tentukan namun proses ini memakan waktu beberapa lama. Selama proses penulisan maka form aplikasi kita berstatus " Not-Responding". Form akan normal lagi ketika file csv selesai dibuat. Keterangan kenapa terjadi not-responding pada aplikasi kita. Di Delphi ketika kita membuat proyek aplikasi windows maka aplikasi yang dibangun oleh Delphi adalah aplikasi single-threading. Terdapat satu thread di aplikasi tersebut yang disebut juga thread utama yang kerjanya adalah meng-scan event-event yang terjadi. Sebagai keterangan Delphi adalah aplikasi yang berjalan secara Event-driven yaitu aplikasi yang proses kerjanya meng-scan event-event yang terjadi secara berurutan(seperti event klik pada button, pergeseran windows dan lain-lain). Bila pada proses scanning ternyata ada event yang terjadi maka proses scanning akan berhenti dan callback (aksi) yang didefinisikan untuk event yang bersangkutan akan dijalankan. Setelah callback/aksi tersebut selesai dijalankan maka proses scanning event berjalan lagi sesuai dengan urutan. Event dan Callback di delphi terdiri dari dua jenis yaitu: 1. Event dan Callback yang sudah tertulis di library Delphi. Seperti ketika kita mengedrag form maka terjadi pergeseran form windows karena terjadi event drag pada title form dan aplikasi mengerjakan callback untuk event drag form, atau perubahan bentuk button ketika ada event click pada button. Di form dan komponen yang kita buat secara otomatis terbuat event-event dan callback standardnya yang terdaftar di aplikasi. Inilah yang menyebabkan kelakuan form menjadi kelakuan standar form GUI (dapat di-drag, di-close dan sebagainya). 2. Event dan Callback yang ditambahkan oleh programmer. Yaitu kode yang kita ketik di bagian event dari komponen atau yang biasa kita tuliskan ketika kita membuat event. Seperti kode di event buttonclick dan sebagainya. Event dan Callback inilah yang menentukan tingkah laku aplikasi sesuai keinginan kita selain kelakuan standar GUI. Ketika kita mengeklik button di aplikasi yang baru kita buat tadi maka callback/aksi pada event buttonclick memanggil proses pembuatan file csv yang kita tambahkan ke event button click. Callback ini cukup berat sehingga proses scan pada event-event di form tidak sempat dijalankan untuk beberapa saat. Ketika kita mengeser form atau mengeklik button maka tidak terjadi apa-apa di form aplikasi kita. Setelah proses pembuatan file csv selesai maka kelakuan form akan kembali

normal. Bagaimana membuat aplikasi yang formnya bebas dari kejadian "not-responding" akan dilakukan dengan teknik multi-threading. Membuat Aplikasi Multi-threading Disini kita akan membangun aplikasi multi-threading sederhana dimana ketika kita mengeklik button maka akan dibuat sebuah thread lain yang berjalan disamping thread utama untuk membuat file csv. Source file proyek multi-threading 1. Kita buat applikasi seperti langkah nomer 1 sampai langkah nomer 4 pada applikasi single-threading. 2. Kita klik File->new->other lalu pilih thread object klik ok dan namakan thread sebagai BuatCSV 3. Simpan file thread object yang baru kita buat misal namanya unit2 lalu kita klik form utama. Dan kita klik pada bagian menu file->use unit setelah itu kita pilih file thread object tersebut. Ini menentukan bahwa unit di form utama (misal unit1) mengakses file thread object tadi (unit2) dan kebalikannya tidak. 4.Perhatikan dalam thread object ada procedure Execute. Kode didalam prosedur inilah yang akan dijalankan ketika thread berjalan. procedure BuatCSV.Execute; {kode yang ditulis dalam prosedur ini yang akan dijalankan oleh thread} 5. Kita edit file thread object (unit2) sebagai berikut: unit Unit2; interface uses Classes, SysUtils; type BuatCSV = class(tthread) private ffilename: TFileName; procedure buatfilecsv(namafile:tfilename); protected procedure Execute; override;

public property filename:tfilename read ffilename write ffilename; implementation procedure BuatCSV.buatFileCSV(namaFile: TFileName); isifile:tstrings; i,j:integer; nilaiacak:extended; text:string; isifile := TStringList.Create; for i := 1 to 200000 do text := 'No. ' + IntToStr(i); for j:=0 to 49 do nilaiacak := sqrt(10 * Random); nilaiacak := Round(nilaiAcak * 100) / 100; text := text + ',' + FloatToStr(nilaiAcak); isifile.add(text); isifile.savetofile(namafile); isifile.free; procedure BuatCSV.Execute; buatfilecsv(filename); end. Keterangan dari kode diatas.. dibuat iabel ffilename bertipe TFilename untuk menentukan nama file yang disimpan oleh thread ini. private ffilename: TFileName; Dibuat properti untuk mengakses iabel tersebut: public property filename:tfilename read ffilename write ffilename; Properti ini dibuat agar form utama (unit1) dapat mengirimkan nama file ke thread ini. Dibuat prosedur buatfilecsv untuk membuat file csv dan prosedur tersebut dipanggil di prosedur

execute. dimana argumen/parameter yang digunakan ketika memanggil prosedur buatfilecsv adalah argumen yang dikirimkan oleh form utama melalui properti filename. 6. Di form utama (unit1) kita gunakan dan kode di thread object (unit2): unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Button1: TButton; SaveDialog1: TSaveDialog; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } Form1: TForm1; implementation uses Math, Unit2; {$R *.dfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); threadbuatcsv:buatcsv; if (SaveDialog1.Execute) then threadbuatcsv := BuatCSV.Create(True); threadbuatcsv.freeonterminate := True; threadbuatcsv.filename := SaveDialog1.FileName; threadbuatcsv.resume;

end. Disitu kita lihat Kelas BuatCSV dipanggil dengan parameter True. Keterangannya adalah parameter True ini berguna agar thread object yang kita buat tidak langsung berjalan tapi idle terlebih dulu. Klo parameter kita set false maka thread object tersebut langsung berjalan padahal kita perlu mengirim parameter filename ke dalam thread tersebut. Kita set property thread menjadi FreeOnTerminate agar ketika thread telah menyelesaikan operasinya maka thread tersebut otomatis hilang dari memori. Setelah parameter filename kita masukkan maka kita panggil fungsi Resume untuk mengaktifkan thread tersebut. 7. Kita compile aplikasi tersebut dan kita jalankan. Akan kita lihat ketika kita telah mengeklik tombol save didialog button maka form tetap berjalan normal dan proses pembuatan file csv tetap berjalan seperti biasa. Penutup Ketika thread utama membuat thread lain atau thread pekerja maka thread utama bisa dikatakan lepas tangan dan thread pekerja bekerja sendiri secara independen. Seperti yang ditunjukkan oleh aplikasi tersebut. Thread pengontrol atau thread utama dapat membuat, memulai, menghentikan (pause atau halt) obyek thread lainnya. Namun dia tidak bisa turut campur lebih jauh ke kerja dari intruksi-intruksi dalam thread lain tersebut. Aplikasi yang kita buat tersebut adalah aplikasi multithread sederhana dimana kita tidak bisa melihat status dari yang dikerjakan oleh thread pekerja(thread yang membuat file csv). Bagaimana bila kita ingin membuat status pekerjaan thread tersebut bisa ditampilkan di form gui, misal dengan sebuah progressbar yang diakses oleh thread pekerja, sementara form gui diatur oleh thread utama. Ini bisa kita lakukan namun sebelumnya kita harus mengerti tentang tingkah laku beberapa thread yang mengakses satu atau lebih sumber daya (resource) iable atau obyek bersama-sama dan masalah-masalah yang mungkin ditimbulkan. Satu metode yang lazim digunakan adalah sinkronisasi kerja thread. Saya sendiri berencana untuk membuat tutorialnya segera, semoga cepat terlaksana :D. Tentang Penulis Catur Budi Santoso Freelance.