- 论坛徽章:
- 0
|
在网上看到malloc函数不是线程安全的,我写了一个多线程程序进行了试验,但好像没有问题,是不是有隐患啊?如果开启的线程多的话,是不是就会出现问题了啊?还有如果想出现问题,我的程序该怎样修改才能证明malloc的线程不安全特性?哪位大侠能否说一下,我现在想通过一个实例来加深对函数的线程安全性与否的理解,我觉得这样更直观,不过本人比较愚笨,举不出合适的例子来,如果大侠们有合适的例子不妨拿出来让小弟参考一下,真是多谢啦!
#include <stdio.h>
#include <pthread.h>
void display(int *i)
{
int j;
char * buf=(char *)malloc(sizeof(100));
printf("address=%u\n",buf);
printf("thread id %d,display value %d\n",pthread_self(),(*i)++);
for(j=1;j<=9999999;j++)
j=j;
free(buf);
}
int main()
{
pthread_t t1,t2,t3;
int a=1,b=2,c=3;
pthread_create(&t1,NULL,display,&a);
pthread_create(&t2,NULL,display,&b);
pthread_create(&t3,NULL,display,&c);
printf("over in the main thread!\n");
return 0;
} |
|