linux创建线程和windows创建线程对比
来源:互联网 发布:网络运营学校 编辑:程序博客网 时间:2024/06/08 17:42
linux:
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<pthread.h> 4 5 /* 声明结构体 */ 6 struct member 7 { 8 int num; 9 char *name;10 }; 11 12 /* 定义线程pthread */13 static void * pthread(void *arg) 14 {15 struct member *temp;16 17 /* 线程pthread开始运行 */18 printf("pthread start!\n");19 20 /* 令主线程继续执行 */21 sleep(2);22 23 /* 打印传入参数 */24 temp = (struct member *)arg; 25 printf("member->num:%d\n",temp->num);26 printf("member->name:%s\n",temp->name);27 28 return NULL;29 }30 31 /* main函数 */32 int main(int agrc,char* argv[])33 {34 pthread_t tidp;35 struct member *b;36 37 /* 为结构体变量b赋值 */38 b = (struct member *)malloc(sizeof(struct member)); 39 b->num=1;40 b->name="mlq"; 41 42 /* 创建线程pthread */43 if ((pthread_create(&tidp, NULL, pthread, (void*)b)) == -1)44 {45 printf("create error!\n");46 return 1;47 }48 49 /* 令线程pthread先运行 */50 sleep(1);51 52 /* 线程pthread睡眠2s,此时main可以先执行 */53 printf("mian continue!\n");54 55 /* 等待线程pthread释放 */56 if (pthread_join(tidp, NULL)) 57 {58 printf("thread is not exit...\n");59 return -2;60 }61 62 return 0;63 }
windows:
#include <windows.h>
#include <strsafe.h>//win2003SDK必须安装 要不无此头文件。此文件是为了实现StringCchPrintf,StringCchLength。
#define MAX_THREADS 3
#define BUF_SIZE 255
typedef
struct
_MyData{
int
val1;
int
val2;
}MYDATA,*PMYDATA;
DWORD
WINAPI ThreadProc(
LPVOID
lpParam)
{
HANDLE
hStdout;
PMYDATA pData;
TCHAR
msgBuf[BUF_SIZE];
size_tcchStringSize;
DWORD
dwChars;
hStdout=GetStdHandle(STD_OUTPUT_HANDLE);
if
(hStdout==INVALID_HANDLE_VALUE)
return
1;
//Cast the parameter to the correct data type.
pData=(PMYDATA)lpParam;
//Print the parameter values using thread-safe functions.
StringCchPrintf(msgBuf,BUF_SIZE,TEXT(
"Parameters=%d,%d\n"
),
pData->val1,pData->val2);
StringCchLength(msgBuf,BUF_SIZE,&cchStringSize);
WriteConsole(hStdout,msgBuf,cchStringSize,&dwChars,NULL);
//Free the memory allocated by the caller for the thread
//data structure.
HeapFree(GetProcessHeap(),0,pData);
return
0;
}
void
main()
{
PMYDATA pData;
DWORD
dwThreadId[MAX_THREADS];
HANDLE
hThread[MAX_THREADS];
int
i;
//Create MAX_THREADS worker threads.
for
(i = 0; i < MAX_THREADS; i++)
{
//Allocate memory for thread data.
pData=(PMYDATA)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,
sizeof
(MYDATA));
if
(pData==NULL)
ExitProcess(2);
//Generate unique data for each thread.
pData->val1=i;
pData->val2=i+100;
hThread[i]=CreateThread(
NULL,
//default security attributes
0,
//use default stack size
ThreadProc,
//thread function
pData,
//argument to thread function
0,
//use default creation flags
&dwThreadId[i]);
//returns the thread identifier
//Check there turn value for success.
if
(hThread[i]==NULL)
{
ExitProcess(i);
}
}
//Wait until all threads have terminated.
WaitForMultipleObjects(MAX_THREADS,hThread,TRUE,INFINITE);
//Close all thread handle supon completion.
for
(i=0;i<MAX_THREADS;i++)
{
CloseHandle(hThread[i]);
}
}
http://blog.csdn.net/cbnotes/article/details/8277180/
阅读全文
0 0
- linux创建线程和windows创建线程对比
- windows 创建线程和线程同步
- linux 线程创建和结束
- 对比:Linux和Windows系统线程间
- 关于创建线程的对比
- windows 创建子线程
- windows创建线程
- windows线程创建函数
- windows driver 创建线程
- 创建Windows线程
- linux 线程编程:线程创建
- windows下进程和线程的创建
- Windows线程的创建和终止
- 创建线程和结束线程
- 线程创建和线程函数
- Linux线程-创建
- linux 下创建线程
- LINUX 创建线程例子
- 幕课网——React.js入门基础与案例开发——资料
- 阿里巴巴java开发规范
- unity3d Light Probe Group图解超详细使用方法
- 做到这一点,你也可以成为优秀的程序员
- Spring boot 整合RabbitMq有简单到深入
- linux创建线程和windows创建线程对比
- qtableview + QAbstractTableModel 表头排序
- Java陷阱一箩筐----面试题集
- Zabbix3.0 配置模板监控windows agent端的内存及磁盘容量并触发报警。
- jquery ajax参数详解
- 将后台JSON数据填充Form表单
- apache2+djiango+logging configuration
- 网络安全事件频发,怎么保护自己的生物识别信息?
- Manifest merger failed with multiple errors, Error:Execution failed for task ':app:processDebu