多线程基本步骤及常用函数
来源:互联网 发布:php执行linux命令无效 编辑:程序博客网 时间:2024/06/05 18:22
一、基本步骤
1、linux下的多线程
线程入口函数:void *thread2();
4)结束线程:pthread_exit(NULL);
5)等待线程结束 pthread_join()函数
if(thread[0] !=0)
{ pthread_join(thread[0],NULL);//该函数为线程阻塞函数,直到等待的线程 //结束为止; printf("线程1已经结束\n"); }
2、Windows中的多线程
3、mfc中的多线程
二、常用函数
1、AfxBeginThread函数
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,
返回值: 一个指向新线程的线程对象
pfnThreadProc : 线程的入口函数,声明一定要如下: UINT MyThreadFunction( LPVOID pParam );
pParam : 传递入线程的参数,注意它的类型为:LPVOID,所以我们可以传递一个结构体入线程.
nPriority : 线程的优先级,一般设置为 0 .让它和主线程具有共同的优先级.
nStackSize : 指定新创建的线程的栈的大小.如果为 0,新创建的线程具有和主线程一样的大小的栈
dwCreateFlags : 指定创建线程以后,线程有怎么样的标志.可以指定两个值:
CREATE_SUSPENDED : 线程创建以后,会处于挂起状态,真到调用: ResumeThread
0 : 创建线程后就开始运行.
lpSecurityAttrs : 指向一个 SECURITY_ATTRIBUTES 的结构体,用它来标志新创建线程的安全性.如果为 NULL ,
那么新创建的线程就具有和主线程一样的安全性.
如果要在线程内结束线程,可以在线程内调用 AfxEndThread.
结束线程的两种方式
面会详细的向你解释要结束线程的两种方式
当然你可以定义自己的认为合适的值来代表线程成功执行.在线程内调用AfxEndThread将会直接结束线程,此时线
程的一切资源都会被回收.
不管是工作者线程还是界面线程,如果你想在线程结束后得到它的确结果,那么你可以调用:
::GetExitCodeThread函数。
2、WaitForSingleObject函数
3、pthread_mutex_init函数
函数pthread_mutex_init用来生成一个互斥锁,如:pthread_mutex_t mut;
pthread_mutex_init(&mut,NULL);
NULL参数表明使用默认属性。如果需要声明特定属性的互斥锁,须调用函数 pthread_mutexattr_init。函数pthread_mutexattr_setpshared和函数 pthread_mutexattr_settype用来设置互斥锁属性。前一个函数设置属性pshared,它有两个取值, PTHREAD_PROCESS_PRIVATE和PTHREAD_PROCESS_SHARED。前者用来不同进程中的线程同步,后者用于同步本进程的不同线程。在上面的例子中,我们使用的是默认属性PTHREAD_PROCESS_ PRIVATE。后者用来设置互斥锁类型,可选的类型有PTHREAD_MUTEX_NORMAL、PTHREAD_MUTEX_ERRORCHECK、 PTHREAD_MUTEX_RECURSIVE和PTHREAD _MUTEX_DEFAULT。它们分别定义了不同的上所、解锁机制,一般情况下,选用最后一个默认属性。二 pthread_mutex_lock pthread_mutex_unlock pthread_delay_np
pthread_mutex_lock声明开始用互斥锁上锁,此后的代码直至调用pthread_mutex_unlock为止,均被上锁,即同一时间只能被一个线程调用执行。当一个线程执行到pthread_mutex_lock处时,如果该锁此时被另一个线程使用,那此线程被阻塞,即程序将等待到另一个线程释放此互斥锁。
4、pthread_create()函数
5、CreateThread函数
编辑本
- 多线程基本步骤及常用函数
- MATLAB基本编程及常用函数总结
- springMVC基本步骤及问题
- Javascript常用函数及基本教程集合的用法参考
- mysql常用状态检查函数及基本命令
- c语言基本数据类型和常用常量及函数
- Windows平台下多线程编程基本步骤
- Linux常用多线程函数
- 多线程之常用函数
- 常用基本函数
- PHP基本常用函数
- jquery基本常用函数
- mysql基本常用函数
- 多线程(一) 多线程介绍及基本使用
- VC中网络编程的常用函数及UDP,TCP协议编程步骤
- Android多线程编程方法及开启步骤
- 安装eclipse及语言包的基本步骤
- 2:jdbc 连接步骤及基本用法
- Flex实现DataGrid标签中嵌入图片
- 什么是星型模型和雪花型模型,以及区别。
- 一份真心的微笑-八年级作文
- Action prediction and identification of tempral user behavior
- flex日期时间差
- 多线程基本步骤及常用函数
- SVN is already under version control问题解决
- 解决ruby中文乱码
- jboss的溢出问题
- FLex遍历重置表单
- FLEX:自定义事件 总结
- 解决 emulator-5554 disconnected! Cancelling
- linux下安装jdk+tomcat+mysql
- Eclipse自动补全功能和自动生成作者、日期注释等功能设置