前陣子在我個人板上有寫,FreeBSD 6.0 的
gethost*()
已經 Thread-safe 了:
gethostbyname
manpage on FreeBSD 6.0gethostbyname
manpage on FreeBSD 5.4
在最下面 BUGS 的地方寫的還蠻清楚的,所以我就寫了個小程式測試,在不同的 Thread 裡面不斷的呼叫
gethostbyname()
,看傳回來的位置是什麼:
#include <netdb.h>
#include <pthread.h>
#include <stdio.h>
#define THREAD_NUM (3)
void *thread_start()
{
const pthread_t tid = pthread_self();
int i;
for (i = 0; i < 5; i++) {
struct hostent *p = gethostbyname("ccca.nctu.edu.tw");
printf("tid = %d, gethostbyname() = %p\n", tid, p);
sleep(1);
}
return;
}
int main(void)
{
pthread_t tid[THREAD_NUM];
int i;
for (i = 0; i < THREAD_NUM; i++)
pthread_create(tid + i, NULL, thread_start, NULL);
sleep(10);
}
No comments:
Post a Comment