关于函数_beginthread参数的有关问题

关于函数_beginthread参数的问题
想用C语言实现多线程,于是找到了_beginthread这样一个函数,,但在参数上总是不对,求大侠指教啊。
这个函数的原型是  
  unsigned long _beginthread( void( __cdecl *start_address )( void * ), unsigned stack_size, void *arglist );有三个参数,第一个参数是一个返回值为空,参数为空指针的函数指针,,就这个参数出了问题。
我的程序里自定义了一个函数:
  void (*RunCircle)(struct Global *ptr);
其中的结构体Global是这样一个全局变量:
  struct Global{
int color;
int pre_x;
int pre_y;
int x;
int y;
int pre_wall;
int pre_wall_temp;
  }g1,g2;
这几部分在程序里的位置顺序是这样的:
**************************************************************************
  void (*RunCircle)(struct Global *ptr);//自定义函数声明
  struct Global{
int color;
int pre_x;
int pre_y;
int x;
int y;
int pre_wall;
int pre_wall_temp;
  }g1,g2;//结构体声明
  struct Global g1={
  .....
  };//结构体实例的初始化
  struct Global g2={
  .....
  };//结构体实例的初始化
  int main()
  {
  .....
  flag1=_beginthread(RunCircle,0,&g1);//函数调用
  .....
  flag2=_beginthread(RunCircle,0,&g2);//函数调用
  }
  void (*RunCircle)(struct Global *ptr)//自定义函数的定义
  {.....}

***********************************************************************
这是VS2010运行后报错:
  “_beginthread”: 不能将参数 1 从“void *”转换为“void (__cdecl *)(void *)”
  从“void*”到指向非“void”的指针的转换要求显式类型转换


另外,因为一个库的原因,项目是创建在cpp文件里的,,不知道这个有没有影响。


内容有点长,,小弟实在是解决不了了,,求帮助~~~~~~~~~~


------解决方案--------------------
C/C++ code

void RunCircle(void *ptr) 
{
 Global* pGlobal = (Global*)(ptr);
 //使用pGlobal
}

flag1=_beginthread(&RunCircle,0,&g1);//