#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()
{
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)