c语言程序设计基础 C语言多线程并发执行不随机?
浏览量:2887
时间:2021-03-11 07:42:49
作者:admin
C语言多线程并发执行不随机?
1:pthreaduujoin与并发或非并发无关。它意味着在返回之前等待子线程完成。你的代码有一个问题,就是只等待最后一个线程的结束,你的pthreadjoin的第一个参数是最后一个线程的ID。但是它与并发顺序无关
2:你的CPU只有一个核心吗?多线程只能在多核CPU上运行,它可以将线程分配给不同的CPU并并发执行(即随机执行)。但我不认为现在有很多单核CPU,除非你是一个虚拟机,只分配了一个核心。此外,即使使用单个内核,如果线程执行的任务需要很长时间,系统也会交替执行任务片。所以您的主要问题如下:
3:您的子线程的执行速度几乎等于创建速度,即线程一创建就完成了,所以没有时间进行随机分配。您可以在子线程中执行更多操作,例如为每个子线程连续打印1000行。如果你再看一遍,你会发现多线程没有足够的时间,这是随机的。
c语言有没有多线程这个概念?
线程:线程是程序中的执行流。每个线程都有自己的特殊寄存器(堆栈指针、程序计数器等),但代码区域是共享的,即不同的线程可以执行相同的函数。
多线程:多线程是指一个程序包含多个执行流,即一个程序可以运行多个不同的线程来同时执行不同的任务,也就是说,一个程序可以创建多个并行执行线程来完成自己的任务。
C语言设计之初,没有设计多线程机制,因为随着软硬件的发展和需求的发展。后来,C语言开发了线程库来支持多线程操作和应用。
本文主要介绍了基于Linux的C多线程技术。在编译C多线程时,一方面必须指定Linux C语言的多线程库pthread才能正确编译(例如:GCC test)。C-O test-lpthread);另一方面,必须包含线程头文件include
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。