c 语言多线程作用,c语言 多线程

c 语言多线程作用,c语言 多线程c 语言多线程 编辑 概述一个程序开始运行就是一个进程 进程包括运行中的程序和程序所使用到的内存和系统资源 而一个进程又是由多个线程所组成的 基本概念进程 当一个程序开始运行时 它就是一个进程 进程包括运行中的程序和程序所使用到的内存和系统资源 线程 线程是程序中的一个执行流 每个线程都有自己的专有寄存器 但代码区是共享的 即不同的线程可以执行同样的函数 多线程 多线程是指程序中包含多个执行流 即

c语言 多线程[编辑]

概述

一个程序开始运行就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。

基本概念

进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。

线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器,但代码区是共享的,即不同的线程可以执行同样的函数。

多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

优势

提高应用程序响应:对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而如果使用多线程技术,将耗时长的操作置于一个新的线程,就可以避免这种尴尬的情况。

使多CPU系统更加有效:当线程数不大于CPU数目时,不同的线程就会运行于不同的CPU上。

改善程序结构:一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序便会利于理解和修改。

LinuxC多线程介绍

C语言的开始设计,并未设计多线程的机制,由于随着软硬件的发展及需求的发展。后来C语言才开发了线程库以支持多线程的操作、应用。主要基于Linux介绍C多线程。在编译C多线程时候,一方面必须指定Linux C语言线程库多线程库pthread,才可以正确编译;另一方面要包含有关线程头文件#include。

线程创建

函数原型为int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);

返回值:若是成功建立线程返回0,否则返回错误的编号。

形式参数:pthread_t *restrict tidp要创建的线程的线程id指针;const pthread_attr_t *restrict attr创建线程时的线程属性;void* (start_rtn)(void)返回值是void类型的指针函数;void *restrict arg start_rtn的形参。

线程挂起:该函数的作用使得当前线程挂起,等待另一个线程返回才继续执行。也就是说当程序运行到这个地方时,程序会先停止,然后等线程id为thread的这个线程返回,然后程序才会断续执行。

函数原型:int pthread_join( pthread_t thread, void value_ptr);

线程退出

函数原型:void pthread_exit(void *rval_ptr); 获取当前线程id;函数原型:pthread_t pthread_self(void);

互斥锁

创建pthread_mutex_init;销毁pthread_mutex_destroy;加锁pthread_mutex_lock;解锁pthread_mutex_unlock。

条件锁

创建pthread_cond_init;销毁pthread_cond_destroy;触发pthread_cond_signal;广播pthread_cond_broadcast;等待pthread_cond_wait。

正确处理Linux平台下的线程结束问题

在Linux平台下,当处理线程结束时需要注意的一个问题就是如何让一个线程完成,让其所占资源得到正确释放。在Linux平台默认情况下,虽然各个线程之间是相互独立的,一个线程的终止不会去通知或影响其他的线程。但是已经终止的线程的资源并不会随着线程的终止而得到释放需要调用pthread_join() 来获得另一个线程的终止状态并且释放该线程所占的资源。

多线程函数

c语言在win32控制台下写的多线程函数

#include

#include

#include “stdio.h

DWORD WINAPI funcProc(

LPVOID lpParameter // thread data

);

int index = 0;

void main()

{

HANDLE hThred1;

hThred1 = CreateThread(NULL,0,funcProc,NULL,0,NULL);

CloseHandle(hThred1);

while(index ++ < 1000)

cout<

// Sleep(1);

}

DWORD WINAPI funcProc(

LPVOID lpParameter // thread data

)

{

while(index ++ < 1000)

cout<

return 0;

}

Linux 下多线程函数

#include

#include

void Senny(void)

{

int i;

for(i=0;i<10;i++)

printf(“This is Senny:%d\n”,i);

}

int main()

{

pthread_t thread_id;

int k,ret;

ret=pthread_create(&thread_id,NULL,(void*)Senny,NULL);

if(ret!=0)

{

printf(“Create thread fail!”);

exit(1);

}

for(k=0;k<10;k++)

{

printf(“This is main process!\n”);

}

pthread_join(thread_id,NULL);

return 0;

}

参考资料: 百度百科

扩展阅读:

相关词条:

合作编辑:

分享到:

更多

网络营销词典内容均由网友提供,仅供参考。如发现词条内容有问题,请发邮件至info # wm23.com。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176880.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:49
下一篇 2026年3月26日 下午8:49


相关推荐

  • cpu overclocking_cpu memory overclocking

    cpu overclocking_cpu memory overclockingWhydoeskworkerhogyourCPU?TofindoutwhyakworkeriswastingyourCPU,youcancreateCPUbacktraces:watchyourprocessorload(withtoporsomething)andinmomentsofhighloadthroughkworker,executeechol>/proc/sysrq-triggertocreatea

    2025年12月6日
    5
  • mknod详解

    mknod详解br br mknod makeblockorc mknod OPTION NAMETYPE MAJORMINOR br nbsp nbsp nbsp option 有用的就是 m 了 br nbsp nbsp nbsp name nbsp nbsp 自定义 br nbsp nbsp nbsp type nbsp nbsp 有 b 和 c 还有 pbr nbsp nbsp nbsp 主设备号 br nbsp nbsp nbsp 次设备号 br br 主设备号是由 usr src linux i

    2026年3月17日
    1
  • select 函数详解

    select 函数详解Unix 系统下解释 函数原型 intselect intmaxfdp fd set readfds fd set writefds fd set errorfds structtimeva timeout select 函数的主要用途是什么 select 函数是一个监控函数 用来监控插口的状态 插口就是指的是文件描述符 Unix Linux 一切皆文件 select 函数能够监控插口状态 如下表 具体解释 select 的参数 先解释第五个参数 最后一个参数 st

    2026年3月17日
    3
  • CSS 颜色代码大全 CSS颜色对照表[通俗易懂]

    CSS 颜色代码大全 CSS颜色对照表[通俗易懂]转载地址:https://blog.csdn.net/u012117917/article/details/41604711HTML及CSS常用颜色英文词汇  黑色 银色 灰色 白色 茶色 红色 紫色 紫红 black silver gray white maroon …

    2022年5月17日
    145
  • SSH config 文件的作用

    SSH config 文件的作用此内容为原创转载请添加必要说明 谢谢 今天趁着白雪皑皑覆青山的美景 我简单写一下 Linux 中 SSHconfig 文件的使用 首先我们得知道什么是 SSH 通俗讲服务器与客户端的安全通信协议 具体安装有客户端和服务端两种 具体安装方式 我在此不再累赘 对于安装好 SSH 服务之后如何通过 config 这里我们使用 Xshell 实现多台 linux 服务器管理 这里我来一一阐述 如下是 Xshell 客户端

    2026年3月17日
    2
  • checkbox选中和不选中 jqu_jquery checkbox 选中不选中「建议收藏」

    checkbox选中和不选中 jqu_jquery checkbox 选中不选中「建议收藏」展开全部$(function(){//动态绑定默认状态//$(“#ck”).attr(“checked”,true)//选中//$(“#ck”).attr(“checked”,false)//未选中//点击判断选中还是未选中$(“#ck”).click(function(){if($(this).is(“:checked”)){alert(“选中”);}else{alert…

    2022年6月30日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号