c语言是单线程还是多线程
发布时间:2025-05-13 02:07:30 发布人:远客网络
一、c语言是单线程还是多线程
1.多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行。2.单线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。3.多线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;?多线程需要协调和管理,所以需要CPU时间跟踪线程;?线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;线程太多会导致控制太复杂。4.单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。举例,就像ppsspp运行一样。比如需要处理一段图像解码,单线程必须处理完这一段才可以进行下一段处理,所以速度会显得有点慢。5.多线程运行就是一个进程内有多个相对独立的并且实现特定的任务以竞争CPU的方式执行,在多处理机条件下宏观上是并发,实际上是分时执行,只是执行的时间片较短。例如运行ppsspp.处理一段图像数据,他可以用一个线程处理这个,而用另一个线程处理下一段数据。相对单线程而言速度会有提高。
二、C语言多线程的操作步骤
1、函数原型:intpthread_create(pthread_t*restrict tidp,const pthread_attr_t*restrict attr,void*(*start_rtn)(void),void*restrict arg);
2、返回值:若是成功建立线程返回0,否则返回错误的编号。
3、形式参数:pthread_t*restrict tidp要创建的线程的线程id指针;const pthread_attr_t*restrict attr创建线程时的线程属性;void*(start_rtn)(void)返回值是void类型的指针函数;void*restrict arg start_rtn的形参。
4、线程挂起:该函数的作用使得当前线程挂起,等待另一个线程返回才继续执行。也就是说当程序运行到这个地方时,程序会先停止,然后等线程id为thread的这个线程返回,然后程序才会断续执行。
5、函数原型:intpthread_join(pthread_tthread, void**value_ptr);
6、参数说明如下:thread等待退出线程的线程号;value_ptr退出线程的返回值。
7、返回值:若成功,则返回0;若失败,则返回错误号。
8、函数原型:voidpthread_exit(void*rval_ptr);
9、函数原型:pthread_tpthread_self(void);
10、创建pthread_mutex_init;销毁pthread_mutex_destroy;加锁pthread_mutex_lock;解锁pthread_mutex_unlock。
11、创建pthread_cond_init;销毁pthread_cond_destroy;触发pthread_cond_signal;广播pthread_cond_broadcast;等待pthread_cond_wait。
三、C语言如何实现多线程同时运行
1、点击菜单栏的“Project”选项卡,下拉列表的最后一项“Project options...”是对当前工程的的属性进行设置的。
2、选择弹出对话框中的“Compiler”选项卡。
3、将其中的“Runtime Library”的选择改为“Multithreaded(LIB)”。
4、将看到对话框最下面的文本框中发生了一些变化,新增了“-MT”选项,这与编译器一开始所报的错误提示给出的解决方案一致。
5、页面的设置完成后,再对该源码进行编译时,就能愉快地看到编译完全成功。