c语言中怎样创建多线程?

c语言中怎样创建多线程?,第1张

/*这是我写的最简单的多线程程序,看懂不?*/

#include <windows.h>

#include <stdio.h>

//#include <strsafe.h>

DWORD WINAPI ThreadProc1( LPVOID lpParam )

{

int i=0,j=0

while(1)

{

printf("hello,this thread 1 ...\n")

//延时

for(i=0i<200000000i++)

{

}

}

}

DWORD WINAPI ThreadProc2( LPVOID lpParam )

{

int i=0,j=0

while(1)

{

printf("hello,this thread 2 ...\n")

//延时

for(i=0i<200000000i++)

{

}

}

}

void main()

{

int i=0

//创建线笑悉程1

CreateThread(

NULL, // default security attributes

0, // use default stack size

ThreadProc1,// thread function

NULL, // argument to thread function

0, // use default creation flags

NULL) // returns the thread identifier

//创建线程2

CreateThread(

NULL, // default security attributes

0, // use default stack size

ThreadProc2,// thread function

NULL, // argument to thread function

0, // use default creation flags

NULL) // returns the thread identifier

//让主线程进入循环,主线程若退出,子线手升裂程1,2会被系统“杀死”

while(1)

{

printf("hello,this thread 0 ...\n")

//延时

for(i=0i<毕闭200000000i++)

{}

}

}

1、添加线程相关的头文件:#include<pthread.h>

2、线程创建函数是pthread_create()函数,该函数的原如键型为:

int pthread_create(pthread_t *thread,pthread_attr_t *attr,void* (*start_routine)(void*),void *arg)

3、线程退出函数是pthread_exit()函数,该函数的原型为:

void pthread_exit(void *retval)

创建线程的示例程序如下:

/*

**程序说明:创建线程函数pthread_create()函数的使用。

*/

#include <stdio.h>

#include <pthread.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

//打印标识符的函数

void print_ids(const char *str)

{

pid_t pid //进程标识符

pthread_t tid //线程标识符

pid=getpid() //获得进程号

tid=pthread_self() //获得线程号

printf("%s pid:%u tid:%u (0x%x)\n",

str,(unsigned int)pid,(unsigned int)tid,(unsigned int)tid) //打印进程坦没号和线程号

}

//线程函数

void* pthread_func(void *arg)

{

print_ids("new thread:") //打印新建线程号

return ((void*)0)

}

//主函数

int main()

{

int err

pthread_t ntid //线程号

err=pthread_create(&ntid,NULL,pthread_func,NULL) //创建一个线程

if(err != 0)

{

printf("create thread failed:%s\n",strerror(err))

exit(-1)

}

print_ids("main thread:") //打印主线程号

sleep(2)

return 让橡纳0

}

下面为C语言调用WIN API实现创建埋肆蚂线程:

1,导入<windows.h>头文件

2,声明实现方法DWORD WINAPI ThreadProc1( LPVOID lpParam ) {}

3,在main()方法中调用 CreateThread(NULL,0 ,ThreadProc1,NULL,0,NULL)

要注意的弯埋是主线程不能结束,如果主线程结束,则它的子线程也会被杀死。

#include <windows.h>

#include <stdio.h>

#include<time.h>

DWORD WINAPI ThreadProc1( LPVOID lpParam )

{

int i=0

time_t timer

while(1)

{

timer=time(NULL)

printf("The current time is: %s\n",asctime(localtime(&timer)))

sleep(1)

}

}

void main()

{

int i=0

//让主线程进入循环,主线程雹塌若退出,子线程1,2会被系统“杀死”

//创建线程1

CreateThread(

NULL, // default security attributes

0, // use default stack size

ThreadProc1,// thread function

NULL, // argument to thread function

0, // use default creation flags

NULL) // returns the thread identifier

for()

{

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12568120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存