VC++ 6.0下多线程编程的最简单实例
来源:互联网 发布:易企秀 for mac 编辑:程序博客网 时间:2024/06/01 15:50
今天上午开会的时候,有师弟建议我举个多线程编程最简单的实例,于是开完会后找出了自己5年前写的代码,简单看了看。有时候,我们使用多线程仅仅是为了提高并行处理的效率,那么这时候可以不考虑原子性操作、同步互斥等问题。简单参考了一下网上的很多教程,结合自己之前的代码,举个例子(这里以最简单的Win32控制台程序为例):
首先需要设置工程属性,以支持多线程,以VC++ 6.0 IDE中文版为例,设置方法是:
“工程”——“设置”——“C/C++”选项卡——下拉式列表中选择“Code Generation”——在“Use Run-Time Library”下拉式清单方块中,可以看到用于“Release”设定的“Single-Threaded”和用于Debug设定的“Debug Single-Threaded”。将这些分别改为“Multithreaded”和“Debug Multithreaded”。
自己编写了一段最简单的VC++ 6.0代码:
#include "stdafx.h"#include <windows.h>#include <iostream.h>UINT ComputeProc(int *i);/*线程函数头*/int main(int argc, char* argv[]){int j=0;HANDLE hThread1; HANDLE hThread2;hThread1=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ComputeProc,&j,0,NULL);/*创建线程,其中第四个参数是LPVOID lpParameter,不限制类型的指针参数*/j++; hThread2=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ComputeProc,&j,0,NULL);Sleep(2000);TerminateThread(hThread1,1); TerminateThread(hThread2,1);CloseHandle(hThread1); CloseHandle(hThread2);return 0;}UINT ComputeProc(int *i){int k=*i;printf("The result is %d. \n",k);/*从输出可以看到子线程和父线程是同时运行的*/return 0;}
需要指出的是,真正的多线程编程还是较为复杂的,存在data races, atomicity violations和order violations等问题,目前仍是软件工程研究领域在着力解决的热点和难点问题。
另外,之前在VC下编写Socket程序的时候,如果需要手动定义IP包头或者TCP包头,一般都是用结构体进行定义,我参考了一下之前的代码,例如:
typedef struct icpm_har{unsigned char icmp_type;unsigned char icmp_code;unsigned short icmp_checksum; unsigned short identify;unsigned short serial_num;}ICMP_HDR,*PICMP_HDR; /*ICMP包头*/typedef struct TCPHeader{USHORT sourcePort;USHORT destinationPort;ULONG sequenceNumber;ULONG acknowledgeNumber;UCHAR dataoffset;UCHAR flags;USHORT windows;USHORT checksum;USHORT urgentPointer;}TCPHeader,*PTCPHeader; /*TCP包头*/
以上两点仅供参考。
0 0
- VC++ 6.0下多线程编程的最简单实例
- 多线程编程在C++下实现的简单实例
- VC多线程编程实例
- VC多线程编程实例
- VC多线程编程实例
- VC 多线程编程实例
- VC多线程编程实例
- Matlab7.0利用mcc与VC++编程实例(最简单的示例)
- pthread最简单的多线程编程-001
- pthread最简单的多线程编程-002
- pthread最简单的多线程编程-003
- pthread最简单的多线程编程-004
- vc socket tcp编程的简单实例
- VC++多线程编程实例讲解
- VC++多线程编程实例讲解
- Windows编程 VC++6.0到VS2015 实例小游戏的简单移植 VS下常见错误的排查
- Windows API在VC下编程简单实例
- Linux Qt下简单的多线程编程
- [SIR数据集实验][1]apache-xml-security实验方法
- [小经验]Windows系统中提取某个目录下所有文件夹(或文件)名
- iframe传参中文乱码问题
- Java连接MySQL的经验总结
- [DaCapo学习笔记][1]DaCapo数据简介
- VC++ 6.0下多线程编程的最简单实例
- [论文阅读笔记]DyTa: dynamic symbolic execution guided with static verification results
- [Soot学习笔记][4]使用Soot对源代码进行Null Pointer Analysis
- [一点感想]学国内的大学课本,不如去看维基百科
- 最简单的AspectJ实验环境搭建
- [Soot学习笔记][5]Soot依赖的两个框架
- [Java Path Finder][JPF学习笔记][4]将JPF源码导入Eclipse
- [Java Path Finder][JPF学习笔记][5]编译jpf-symbc报错的解决方法
- [Web开发笔记][3]MyEclipse 8.0启动Tomcat 7报错:Could not find the main class: org.apache.catalina.startup.Boostrap.