c语言thread函数 Thread函数

C语言的_beginthread函数老是类型不兼容怎么办?

你问题中函数_beginthread是windows下创建线程并立即执行的函数:

嘉峪关网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联公司2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

一、直接运行至程序结束或调用_endthread函数结束进程。

二、三个参数分别是执行的函数、新线程堆栈大小(一般传0)、传递给新线程的参数列表(不需要就传NULL)。

三、该函数需要头文件process.h。

四、调用函数mousemove写在main下面,要先申明。

五、main是主线程,在创建进程之后应使用循环、输入或其他函数确保主线程运行。否则像你上面这样写,创建子线程后,主线程就运行结束了。

六、子线程函数死循环定位鼠标,至少给个结束方式吧。

下面是按你代码写的演示,按任意键结束程序:

#includestdio.h

#includewindows.h

#includeprocess.h

#includeconio.h

void mousemove();

int main()

{

_beginthread(mousemove,0,NULL);

getch();

printf("主进程结束\n");

return 0;

}

void mousemove()

{

while(1) {

  SetCursorPos(800,600);

  printf("子线程执行中\n");

}

}

TC(C语言)中的多线程

可以不用。用C语言的计数器就好,不过比较麻烦。。。

如果用多线程,你首先需要了解线程的含义,另外编译的时候需要加参数,

编程的部分比较简单,头文件需要:

#include process.h

然后创建线程使用函数:

_beginthread()

销毁线程函数:

_endthread()

TC3.0也就是增加了个鼠标,修改了一些bug,更新了一下界面而已,编译器是和2.0一样的。

c语言怎么创建线程和使用

1、添加线程相关的头文件:#includepthread.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;

}

vc编程中的thread什么意思

是线程

多线程概述

进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。

线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式,比如说main或WinMain函数,将程序的启动点提供给Windows系统。主执行线程终止了,进程也就随之终止。

每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。

多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能。这一点在多线程编程时应该注意。

Win32 SDK函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。Visual C++ 6.0中,使用MFC类库也实现了多线程的程序设计,使得多线程编程更加方便。

三、Win32 API对多线程编程的支持

Win32 提供了一系列的API函数来完成线程的创建、挂起、恢复、终结以及通信等工作。下面将选取其中的一些重要函数进行说明。

1、HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,

DWORD dwStackSize,

LPTHREAD_START_ROUTINE lpStartAddress,

LPVOID lpParameter,

DWORD dwCreationFlags,

LPDWORD lpThreadId);

该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄,其中各参数说明如下:

lpThreadAttributes:指向一个 SECURITY_ATTRIBUTES 结构的指针,该结构决定了线程的安全属性,一般置为 NULL;

dwStackSize:指定了线程的堆栈深度,一般都设置为0;

lpStartAddress:表示新线程开始执行时代码所在函数的地址,即线程的起始地址。一般情况为(LPTHREAD_START_ROUTINE)ThreadFunc,ThreadFunc 是线程函数名;

lpParameter:指定了线程执行时传送给线程的32位参数,即线程函数的参数;

dwCreationFlags:控制线程创建的附加标志,可以取两种值。如果该参数为0,线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread被调用;

lpThreadId:该参数返回所创建线程的ID;如果创建成功则返回线程的句柄,否则返回NULL。

2、DWORD SuspendThread(HANDLE hThread);

该函数用于挂起指定的线程,如果函数执行成功,则线程的执行被终止。

3、DWORD ResumeThread(HANDLE hThread);

该函数用于结束线程的挂起状态,执行线程。

4、VOID ExitThread(DWORD dwExitCode);

该函数用于线程终结自身的执行,主要在线程的执行函数中被调用。其中参数dwExitCode用来设置线程的退出码。

5、BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode);

一般情况下,线程运行结束之后,线程函数正常返回,但是应用程序可以调用TerminateThread强行终止某一线程的执行。各参数含义如下:

hThread:将被终结的线程的句柄;

dwExitCode:用于指定线程的退出码。

使用TerminateThread()终止某个线程的执行是不安全的,可能会引起系统不稳定;虽然该函数立即终止线程的执行,但并不释放线程所占用的资源。因此,一般不建议使用该函数。

6、BOOL PostThreadMessage(DWORD idThread,

UINT Msg,

WPARAM wParam,

LPARAM lParam);

该函数将一条消息放入到指定线程的消息队列中,并且不等到消息被该线程处理时便返回。

idThread:将接收消息的线程的ID;

Msg:指定用来发送的消息;

wParam:同消息有关的字参数;

lParam:同消息有关的长参数;

调用该函数时,如果即将接收消息的线程没有创建消息循环,则该函数执行失败。

C语言怎么写线程代码

通常使用CreateThread函数来创建新的线程.(Unix下使用pthread_create函数)

首先指出,线程与线程之间,是并列关系,不会存在"父子线程"的概念.

在Windows平台下,CreateThread函数包含在 Windows.h 文件内,包含此文件即可正常使用.

以下为CreateThread函数的声明:

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes,//指向安全性属性描述结构体的

//指针,通常可以忽略的.

SIZE_T dwStackSize,//指定新线程初始的栈大小,若不关心,可以用0填充,来要求使用

//默认值

LPTHREAD_START_ROUTINE lpStartAddress,//用来充当线程的函数的指针.

LPVOID lpParameter,//要传递给函数的参数,这个值本身就是那个参数,而不是参数的地址

DWORD dwCreationFlags,//创建的方式,0表示正常,创建后立即开始运行

LPDWORD lpThreadId//用来接受函数反馈的线程ID的指针.

);

用来充当新的线程的函数格式:

DWORD WINAPI ThreadProc(LPVOID);

CreateThread函数若成功了,返回新线程的句柄,若失败了,则返回NULL.

若用CREATE_SUSPENDED填充dwCreation Flags则创建的线程先挂起来,并不直接开始运行,要用ResumeThread函数恢复线程,才能继续运行.

当前题目:c语言thread函数 Thread函数
网站网址:https://www.cdcxhl.com/article16/docdsgg.html

成都网站建设公司_创新互联,为您提供虚拟主机全网营销推广品牌网站设计营销型网站建设网站制作外贸建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化