您现在的位置是:首页» windows系统» 多线程的并发是怎样实现的,多线程实现父方法和子方法

多线程的并发是怎样实现的,多线程实现父方法和子方法

2023-12-05 05:02:49
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家! 1、目录:Linux操作系统,C语言实现多线程2、Linux操作系统,C语言实现多线程3、Windows操作系统,C语言实现多线程4、void*ThreadOne(void*threa

今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!

1、目录:

Linux操作系统,C语言实现多线程

2、Linux操作系统,C语言实现多线程

3、Windows操作系统,C语言实现多线程

4、void*ThreadOne(void*threadArg)

5、printf("线程开始啦,参数是:%s\n",(char*)threadArg);

6、pthread_tThreadID;/*记录线程标识符*/

7、void*waitingResult;/*等待线程退出的等待结果*/

8、interrorCode;/*记录线程的错误代码*/

9、char*aMessage="这是线程的参数";

10、/*创建并启动线程ThreadOne。若返回值非零,则线程创建失败*/

11、errorCode=pthread_create(&ThreadID,NULL,ThreadOne,aMessage);

12、printf("线程ThreadOne创建失败。错误代码:%d\n",errorCode);

13、/*等待线程标识符为的ThreadID的线程结束*/

14、errorCode=pthread_join(ThreadID,&waitingResult);

15、printf("等待线程退出等待失败。错误代码:%d\n",errorCode);

16、printf("线程的返回值是%p\n",waitingResult);

17、}Windows操作系统,C语言实现多线程:

#include<stdio.h>

18、DWORDAPIENTRYThreadOne(LPVOIDthreadArg)

19、printf("线程开始啦,参数是:%s\n",(char*)threadArg);

20、HANDLEhThread;/*记录线程句柄*/

21、DWORDThreadID;/*记录线程ID号*/

22、DWORDwaitingResult;/*等待线程退出的等待结果*/

23、DWORDthreadExitCode;/*记录线程的返回值*/

24、char*aMessage="这是线程的参数";

25、/*创建并启动线程ThreadOne,返回值为线程句柄,赋值给hThread*/

26、hThread=CreateThread(NULL,0L,ThreadOne,(LPVOID)aMessage,0L,&ThreadID);

27、printf("线程ThreadOne创建失败。错误代码:%lu\n",GetLastError());

28、/*等待线程句柄为的hThread线程结束*/

29、waitingResult=WaitForSingleObject(hThread,INFINITE);

30、if(waitingResult==WAIT_FAILED)

31、printf("等待线程退出等待失败。错误代码:%lu\n",GetLastError());

32、if(GetExitCodeThread(hThread,&threadExitCode))

33、printf("线程的返回值是%lu\n",threadExitCode);

34、printf("获取线程的返回值获取失败。错误代码:%lu\n",GetLastError());

35、}Windows下的多线程:(不带停止)

#include<stdio.h>

36、DWORDWINAPIduoxianchen(LPVOIDlpParam);

37、CreateThread(NULL,NULL,duoxianchen,&num,NULL,NULL);

38、printf("主线程!%05d\n",nu***eep(40);

39、DWORDWINAPIduoxianchen(LPVOIDlpParam)

40、printf("副线程!%05d0x%p\n",*a,a);

1、所有数据结构的生存期,以及对这些数据结构的access,都用这一根逻辑线程。不需要考虑数据结构的race。把任何耗时的操作都给其他线程(IO线程、定时器线程,DB线程等)做,做完之后向事件队列(多线程安全的队列,其他线程是生产者,逻辑线程是消费者)丢事件。

2、所有数据结构的生存期,以及对这些数据结构的access,不一定在一根线程。需要考虑数据结构的race。网络事件、定时器事件唤醒工作线程(一般通过iocp或者epoll来唤醒)执行所有工作,一般不需要交换到其他线程。

3、很显然,单线程逻辑多了一层事件队列交换,会增加延迟,以及所有的逻辑都在一根线程上跑,逻辑被阻塞也会带来延迟。其实吞吐量对于rpc来说,是个宏观的概念,尽可能快地消费网络消息就会提升吞吐量。对于高并发的程序,是无法忍受单线程逻辑的

wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com

标签: 多线程 语言