Sabtu, 07 November 2015

Tentang Thread, Thblue, dan Kehidupan


Oke, thblue itu gak ada. Saya ngarang itu, maaf.

Kali ini akan dijelaskan sekali lagi oleh saya mengenai Thread. Apa itu Thread?
Jika Proses diidentifikasi dengan prosess id atau PID, maka Thread diidentifikasi dengan TID atau Thread ID. Jadi kalo  thread dan proses digabung, mungkin akan menjadi TIPI. Wow.


Thread adalah suatu bagian kecil dari proses yang dijadwalkan oleh operasi. Jadi dalam artian, pada setiap proses, bisa terdapat banyak thread, dan threadnya pun bermacam macam.
Dalam suatu proses, biasanya ada dua macam thread, yaitu:
a. Single Thread : Dalam satu proses hanya punya satu thread.
b. Multi Thread : Dalam satu proses punya dua atau lebih thread. Hal ini membuat proses lebih cepat menjalankan programnya nanti.

Nah....
Dalam linux, perintah untuk membuat suatu thread direpresentasikan dengan perintah "pthread_t".
Algoritma fungsinya sepertin ini --> int pthread_equal(pthread_t tid1, pthread_t tid2);
Lha dalam program anda sekalian,  jangan lupa di include pthread.h diatas atau sebagian perintah thread tidak akan berjalan.

Dalam kasus lain, ada kalanya suatu thread ingin mengetahui TID nya sendiri.
Nah, fungsi
pthread_t pthread_self(void)
bisa menyelesaikan kasus itu. Uda kayak detektif aja dia.

Langsung aja saya akan mencontohkan (mencopaskan sebenarnya) suatu kodingan bagaimana membuat thread yang simple.


#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>

pthread_t tid[2];

void* doSomeThing(void *arg)
{
    unsigned long i = 0;
    pthread_t id = pthread_self();

    if(pthread_equal(id,tid[0]))
    {
        printf("\n First thread processing\n");
    }
    else
    {
        printf("\n Second thread processing\n");
    }

    for(i=0; i<(0xFFFFFFFF);i++);

    return NULL;
}

int main(void)
{
    int i = 0;
    int err;

    while(i < 2)
    {
        err = pthread_create(&(tid[i]), NULL, &doSomeThing, NULL);
        if (err != 0)
            printf("\ncan't create thread :[%s]", strerror(err));
        else
            printf("\n Thread created successfully\n");

        i++;
    }

    sleep(5);
    return 0;
}
Nah, yang pthread_create() itu fungsinya untuk membuat thread kan.
Di dalam fungsi doSomething, threadnya make pthread_self dan pthread_equal untuk mengidentifikasi dirinya apakah dia thread kesatu atau kesasar. Eh, kedua maksudnya.
Kalo loop yang didalam doSomething itu untuk membuat waktu memakan kerja?? (time consuming work apa artinya sih?).
Pokoknya untuk membuat fungsi itu berjalan agak lama sehingga seakan akan memutuhkan waktu sedikit, halah. Kalo loop dihilangkan biasanya tidak akan mengefek pada threadnya.

Nah itu dia. Tidak terasa waktu sudah berjalan agak lama. Cukup lelah saya menjelaskan panjang lebar tentang hal ini dan itu tentang Thread ini.
Ya cukup sekian artikel saya tentang thread, semoga berikutnya saya bisa menjelaskan hal lainnya lagi. Terimakasih.




Tidak ada komentar:

Posting Komentar