Bagaimana untuk menciptakan thread sebanyak n buah sekaligus dan setiap
thread tersebut akan membuat sebuah file dengan nama unik (pake fungsi
tempnam) dan pake pthread_mutex untuk tempnam tersebut (mencegah
dihasilkannya nama sama) ?

Saya sudah membuat sebuah program yang membuat thread sebanyak n buah dengan
algoritma sbb :

           for (j=0; j<nThread; j++)
         {
            i++;
            //printf("Before get el\n");
            el = (*ResultQ)[i];
            printf("[i=%d, j=%d] Retrieving : %s\n", i, j, el.content[0]);
            iRetCode = pthread_create(&aThreadReqId[j], NULL, RequestThread,
(void*) strdup(el.content[0]));
            if (iRetCode == 0)
            {
               printf("Thread-%d ID = %d created\n", j, aThreadReqId[j]);
            }
            else printf("Error create thread !!!\n");
         }
         for (j=0; j<nThread; j++)
         {
            printf("Joining %d -> Thread ID = %d\n", j, aThreadReqId[j]);
            iRetCode = pthread_join(aThreadReqId[j], &Retval);
            if (iRetCode == 0)


               printf("Thread-%d ID = %d join\n", j, aThreadReqId[j]);
            }
            else printf("Error joining thread !!!\n");
         }

Fungsi RequestThread tersebut berisi rutin sebagaimana telah saya sebutkan
sebelumnya. Program tersebut selalu mengalami kegagalan, segmentation fault.

Untuk kasus nThread = 1, tidak ada masalah. Sedangkan untuk nThread > 1,
maka akan mengalami kegagalan. Kegagalan tersebut adalah ketika thread ke-2
dibuat, thread ke-1 seolah-olah tidak berfungsi. Setelah thread ke-2 exit,
kegagalan terjadi. Kemungkinan pada saat eksekusi pthread_join terjadi
kegagalan dikarenakan thread ke-1 yang  tidak tahu kenapa tidak berfungsi
sebagai mana mestinya.

Kira-kira apa penyebabnya  ? Sebelumnya saya pakai cara yang sama tetapi
tidak mengakses file dan baik-baik saja.

Terima kasih.


Slamet
e-mail : [EMAIL PROTECTED]
         [EMAIL PROTECTED]
home   : http://www.commedo.com


--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]

Kirim email ke