sunrise

每天不断学习,才能不断提升自己。

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  64 随笔 :: 0 文章 :: 92 评论 :: 0 Trackbacks

   想了解一下多线程就上网查资料,发现有现成的函数可以直接创建线程。即:

 uintptr_t _beginthread(   void*start_address )( void * ),   unsigned stack_size,   void *arglist   ); 

     返回值:

  假如成功,函数将返回一个处理信息对这个新创建的线程。如果失败_beginthread将返回-1。

  start_address

  新线程的起始地址 ,指向新线程调用的函数的起始地址

  stack_size

  新线程的堆栈大小,可以为0

  arglist

  传递给线程的参数列表,无参数是为NULL

  所在库文件:

  #include <process.h
 
下面是一个创建多线程数据同步的一个实例:

#include<windows.h>
#include
<process.h>
#include
<stdio.h>

unsigned 
int value = 0;

void print(void *argv)
{
    
while(1)
    
{
        printf(
"&value = %x, value = %d\n",&value,value);
        value
++;
        Sleep(
1000);
    }

}


int main()
{
    _beginthread(print,
0,NULL);
    _beginthread(print,
0,NULL);

    
while(1)
        Sleep(
0);
    
    
return 1;
}

关于'_beginthread' : undeclared identifier的解决方法:
Project-->Settings-->C/C ,在Category下拉列表里选择Code Generation,会看到Use run-time library下拉列表,如果你当前是debug模式,选择Debug Multithreaded,如果选择Multithreaded,会出现unresolved external symbol __CrtDbgReport这种编译错误,另外不需要在Link里包含LIBCMT.LIB这个库文件


 

posted on 2012-08-08 15:34 SunRise_at 阅读(1973) 评论(3)  编辑 收藏 引用 所属分类: C/C++学习

评论

# re: 多线程之数据同步 2012-08-09 16:46 飘过~~
_beginthreadex 用的比较多..  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理