`
shaojiashuai123456
  • 浏览: 262163 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

c线程基础

阅读更多

需要引入头文件 #include<pthread.h>

1.创建线程

  int

  pthread_create(pthread_t  *pid,const phread_attr_t *attr,void *(*handler)(void *),void *hand_attr);

 

        (1)pid 表示创建线程的id指针

        (2)attr表示线程的属性,如果为NULL,表示默认设置

        (3)handler表示一个回调函数,即线程所要运行的函数

        (4)hand_attr 表示回调函数参数地址

        返回值类型为int ,0 表示创建成功,非0表示不成功。

    

2.等待线程结束

  int

  pthread_join(pthread_t *pid,void **value_ptr)

        (1)pid 表示创建的线程的id指针

        (2)value_ptr 表示返回值地址指针存放位置的指针

        返回类型为int , 0表示结束成功,非0表示不成功。

3.线程结束

  void pthread_exit(void *value_ptr)

        (1)value_ptr 表示返回值指针

 

 例子

 

#include <stdio.h>
#include <pthread.h>

void * handler1(void *arg)
{
    int i;
    for(i=0;i<3;i++)
    {
         printf("handler1\n");
         sleep(1);
    }
}
void * handler2(void *arg)
{
    int i;
    for(i=0;i<4;i++)
    {
         printf("handler2\n");
         sleep(1);
    }
}

int main(int argc, char *argv[])
{
    //声明2个线程id
    pthread_t pid1;
    pthread_t pid2;
    //创建2个线程
    printf("begin\n");
    if(pthread_create((pthread_t *)&pid1,NULL,(void*)handler1,NULL))
    {
           printf("can't create new thread\n");
           return -1;
    }
    if(pthread_create((pthread_t *)&pid2,NULL,(void*)handler2,NULL))
    {
          printf("can't create new thread\n");
          return -1;
    }
 
    //等待2个线程结束
    if(pthread_join(pid1,NULL))
    {
       	   printf("can't join thread\n");
       	   return -1;
    }
    if(pthread_join(pid2,NULL))
    {
        	printf("can't join thread\n");
          	 return -1;
    }  
    printf("over\n");
    return 0;
}

   linux 编译与运行

    
 
  

   运行结果

 
 
 

       

  • 大小: 860 Bytes
  • 大小: 725 Bytes
0
0
分享到:
评论

相关推荐

    多线程编程 线程基础 共享内存

    多线程从基础讲起,包括线程基础、线程属性、互斥量、共享内存、条件变量。

    线程c语言封装库

    线程C语言封装库是一种专为C语言设计的线程管理工具,它使得开发者能够在C程序中方便地创建和管理线程,同时提供了跨平台的支持。这个库的重要性在于,C语言作为基础且广泛使用的编程语言,往往需要处理多任务并发...

    Linux多线程 C语言编程关于多线程

    ### Linux多线程 C语言编程知识点总结 #### 一、多线程与多进程编程概述 **多线程**的概念可以追溯到20世纪60年代,然而直到80年代中期,这一机制才被正式引入到Unix系统中。随着计算机硬件的发展及软件需求的增加...

    C语言多线程编程:线程控制与同步机制详解

    随后,重点讲解了C语言中多线程编程的基础,包括使用POSIX线程库(pthreads)创建、管理和控制线程的方法。接着,深入探讨了线程同步机制,如互斥锁、条件变量、读写锁和自旋锁的工作原理及具体应用示例。此外,还...

    c语言 多线程文件加密 windosw平台.zip

    在C语言中实现多线程文件加密是一种提升程序性能的有效方式,特别是在Windows平台上。这个压缩包文件包含了关于C语言编程、多线程技术以及文件加密的一些关键知识点。 首先,我们来了解一下C语言。C语言是一种广泛...

    windows环境下C语言多线程实现网络编程,多人聊天室,[总结].pdf

    Windows 环境下 C 语言多线程实现网络编程多人聊天室总结 在 Windows 环境下实现多人聊天室需要使用 C 语言和多线程技术来实现网络编程。下面是关于这个主题的知识点总结: 第一部分:Windows Socket 编程 * 使用...

    Linux下C语言编程--线程操作

    #### 一、线程基础知识概述 线程是操作系统能够进行运算调度的最小单位,它是进程的一部分。简单来说,一个进程可以拥有多个线程,这些线程共享进程的资源(如内存),但每个线程都有自己的独立栈空间和寄存器状态...

    win32多线程例子(c语言)

    在Windows操作系统中,C语言可以用来创建和管理多线程应用程序。`win32多线程例子(c语言)`这个项目就是一个很好的起点,...掌握这些基础知识,初学者就能开始构建更复杂的多线程应用,提升程序的运行效率和用户体验。

    多线程编程基础.pdf

    标题:多线程编程基础 描述与标签:多线程编程基础.pdf 在现代软件开发中,多线程编程已经成为了一项不可或缺的技能。多线程编程是指在单个程序中同时运行多个线程(Thread),每个线程都可以独立执行程序的一部分...

    C语言多线程中变量累加问题的分析

    C语言多线程中变量累加问题的分析 在C语言中,多线程编程是非常重要的概念之一。多线程编程可以提高程序的执行效率、提高响应速度、改善用户体验等。但是,多线程编程也存在一些问题,比如变量累加问题。在本文中,...

    C语言多线程编程教程 POSIX线程库

    ### C语言多线程编程教程 POSIX线程库 ...通过上述基本概念和示例,我们已经为深入学习C语言多线程编程奠定了坚实的基础。接下来的章节将更详细地探讨线程同步机制、线程安全性和高级多线程编程技术。

    C语言实现聊天室线程代码

    在IT行业中,C语言是一种基础且强大的编程语言,尤其在系统级编程和嵌入式领域中广泛应用。本项目“C语言实现聊天室线程代码”是利用C语言编写的一个聊天程序,它涉及到网络通信(TCP/UDP)以及多线程技术,这些都是...

    MFC多线程 工作者线程 用户界面线程

    一、MFC多线程基础 MFC通过CWinThread类支持多线程。每个线程都是一个独立的执行路径,拥有自己的堆栈和上下文。CWinThread是所有MFC线程的基类,负责线程的创建、调度和管理。创建新线程时,通常需要继承CWinThread...

    “多线程”简介及其C代码实现框架

    在C语言中实现多线程,可以使用POSIX线程库(pthread),它提供了创建、同步、管理线程的相关函数。以下是一个简单的C语言多线程框架示例: ```c #include #include #include // 定义线程函数原型 void* thread...

    基于UDP的socket程序,多线程操作,windows下C语言

    ### 基于UDP的Socket程序:多线程操作,Windows下的C语言实现 #### 概述 本文将深入分析一个使用C语言在Windows环境下编写的UDP Socket程序,该程序支持多线程并发操作,实现了数据包的发送与接收功能。通过对给定...

    linux_下多线程编程 C语言

    #### 一、多线程基础知识 在Linux环境下,利用C语言进行多线程编程是一种常见的技术手段,它能够有效地提高程序的并发处理能力,充分利用现代多核处理器的计算资源。在本篇文章中,我们将深入分析一个多线程示例,...

    udp.rar_linux c语言 udp_udp 多线程_udp c语言 linux_udp linux

    在这个"udp.rar"压缩包里,包含的是使用C语言在Linux环境下编写的UDP客户端(udpcli.c)和服务器(udpser.c)程序,以及一个可能包含项目资源或说明的文本文件(www.pudn.com.txt)。 1. UDP协议基础:UDP是一种...

    linux 线程 基础例程

    本教程通过基础例程帮助初学者理解和掌握Linux线程的创建、管理和同步机制。 1. **线程创建**: 在Linux中,线程的创建通常使用POSIX线程库(pthread),其中`pthread_create()`函数用于创建新线程。参数包括线程...

    Linux_C语言线程实现机制分析.pdf

    一、基础知识:线程和进程 在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持 SMP 以及减小(进程/线程)上下文切换开销。一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如 cpu、...

    C#多线程基础和实例

    接下来是"C__多线程基础.doc",这个文档可能涉及以下基础概念: 1. **线程优先级**:每个线程都有一个优先级,系统会根据优先级决定哪个线程先执行。但需要注意,线程优先级并不是绝对的执行顺序保证。 2. **死锁...

Global site tag (gtag.js) - Google Analytics