之前在一篇

基于TCP套接字实现的简单Demo   一文中用到了线程函数CreateThread()函数来

创建新的线程.下面以一个最简单的多线程例子来说明.


C-代码如下:
 //最简单的创建多线程实例
#include <stdio.h>
#include <windows.h> //子线程函数
DWORD WINAPI ThreadFun(LPVOID pM)
{
printf("小刘子线程:%d\n", GetCurrentThreadId());
return 0;
} //主函数,所谓主函数其实就是主线程执行的函数。
int main()
{ HANDLE handle = CreateThread(NULL, 0, ThreadFun, NULL, 0, NULL);
CloseHandle(handle); printf("小刘主线程\n");
//WaitForSingleObject(handle, INFINITE);
return 0;
}

运行结果如下:


输出结果有三种情况:






虽然主线程和子线程是同时进行,但是很明显每次
执行的步骤并非一样.这里面就存在一个线程同步
的问题.所以在下一篇文章中,我将介绍如何使线程
同步.
 
 

CreateThread线程函数的更多相关文章

  1. CreateThread给线程函数传递的参数

      HANDLE WINAPI CreateThread ( __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, // 指向SECURITY_ATTR ...

  2. 【VS开发】CreateThread给线程函数传递的参数

    CreateThread给线程函数传递的参数   HANDLE WINAPI CreateThread ( __in_opt LPSECURITY_ATTRIBUTES lpThreadAttribu ...

  3. 【C++】【MFC】创建新的线程函数

    DWORD WINAPI MyThreadProc (LPVOID lpParam){ somestruct* pN = (somestruct*)lpParam; // 将参数转为你的类型 ... ...

  4. [笔记]linux下和windows下的 创建线程函数

    linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(ti ...

  5. 在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static

    在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static ! 在C语言中,我们使用pthread_create ...

  6. C++中 线程函数为静态函数 及 类成员函数作为回调函数

    线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运行,静态函数的地址是不变的,并不在线程堆栈中static只 ...

  7. 【Linux 线程】常用线程函数复习《二》

    1.函数pthread_join /************************************************************************* > Fil ...

  8. 【Linux 线程】常用线程函数复习《一》

    1.pthread_create以及pthread_self函数 /****************************************************************** ...

  9. mutex锁住共用线程函数 造成了死锁 ,为什么?

    锁住共用的线程函数,为什么出现了死锁的现象,是真的死锁了吗?为什么勒[清晰早点] [逍遥游]# 一般都是用 EnterCriticalSection 和 LeaveCriticalSection 锁住 ...

随机推荐

  1. javascript之数组

    一.定义数组. 定义数组有两个方法: 1.var arr1 = []; //定义一个空数组 2.var arr2 = [1,2,3,"str1","str2"] ...

  2. Linux的环境变量配置

    以下都是环境变量相关的配置文件 1)/etc/enviroment 是系统的环境变量. (2)/etc/profile: 是所有用户的环境变量.当用户第一次登录时,该文件被执行. 并从/etc/pro ...

  3. jar 查找多jar包中类的办法

    jar -tf 多个文件列表, 如jar -tf *.jar 或  jar -tf   a.jar  b.jar ,这样是无任何输出的. 解决办法为: find  . -name  "*.j ...

  4. UISearchBar 点击X 按钮收键盘

    - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;{ NSLog(@"textD ...

  5. 格而知之8:我所理解的Runtime(3)

    关联对象 14.使用Category对类进行拓展的时候,只能添加方法,而不适合添加属性(可以添加属性,也可以正常使用get方法和set方法,只是不会自动生成以下划线开头命名的成员变量). 可以通过关联 ...

  6. Python关于eval与json在字典转换方面的性能比较

    背景介绍 因为python中有eval()方法,可以很方便的将一些字符串类型与字典等数据结构之间进行转换, 所以公司的数据处理同事在保存一些特殊数据时就直接将字典的字符串保存在数据库中. 在程序中读取 ...

  7. ARM LDR伪指令使用方法具体解释

    LDR伪指令 10.45 LDR pseudo-instruction   功能:把一个32位马上数或一个32位的内存地址载入到一个寄存器中. 注意:这里描写叙述的是LDR伪指令,而不是LDR指令   ...

  8. 将数组,表的某一列转换为string字符串的方法

    样例:字符串数组为array,str为字符串数组转换成的字符串 string[] array = { etr, kdgj, 3454, tyt, gff }; string str=string.Jo ...

  9. SQL Server2008R2安装失败问题之语言包问题

           今天安装SQL Server2008 的时候出现了,如下的的问题,安装过程在ExcuteStandardTimingsWorkflow时候报错,结束安装.       提示:       ...

  10. zepto的touch.js左右滑动存在一些问题,用百度的touch.js代替

    这几天用zepto想写一个移动端的活动,在实现左右滑动触发动画时,发现zepto的touch.js在ios的微信上有问题. 问题描述:左右滑动时如果手指没有一直跟频幕贴着(在手机上滑动时,如果手指不是 ...