char *call_in_thread()
{
static char *ret_val = null;
entercriticalsection(&cs);
if(null != ret_val)
{
free(ret_val);
// leavecriticalsection(&cs); // 去掉,不能leave,还没有malloc
ret_val = null;
}
// 这里没有必要判断
// if(null == (ret_val = (char *)malloc(max_ret_val_length)))
// {
// leavecrticalsection(&cs);
// return ret_val;
// }
ret_val = (char *)malloc(max_ret_val_length);
if (ret_val)
{
// do something here .
...
}
leavecriticalsection(&cs);
return ret_val;
}