`
conservatism
  • 浏览: 26300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Linux下C和C++多线程基础示例POSIX pthread

 
阅读更多

C代码示例:gcc example.c -lpthread;

#include <stdio.h>
#include <pthread.h>
void* thread(int r)
{
    int i;
    for(i=0;i<3;i++)
        printf("This is a pthread %d.\n",r);
}

int main(void)
{
    pthread_t id1;
    pthread_t id2;
    pthread_t id3;
    pthread_t id4;
    int i,ret;
    int one=1;
    int two=2;
    int three=3;
    int four=4;
    ret=pthread_create(&id1,NULL, (void*)thread,one);
    ret=pthread_create(&id1,NULL, (void*)thread,two);
    ret=pthread_create(&id1,NULL, (void*)thread,three);
    ret=pthread_create(&id1,NULL, (void*)thread,four);
    if(ret!=0){
         printf ("Create pthread error!\n");
         return 1;
    }
    for(i=0;i<3;i++)
         printf("This is the main process.\n");
    pthread_join(id1,NULL);
    pthread_join(id2,NULL);
    pthread_join(id3,NULL);
    pthread_join(id4,NULL);
    return 0;
}

 

C++代码示例:g++ example.cc -lpthread

#include <stdio.h>
#include <pthread.h>
extern "C" void* thread(void * r)
{
    int i;
    for(i=0;i<3;i++)
        printf("This is a pthread %d.\n",*(int*)r);
}

int main(void)
{
    pthread_t id1;
    pthread_t id2;
    pthread_t id3;
    pthread_t id4;
    int i,ret;
    int one=1;
    int two=2;
    int three=3;
    int four=4;
    ret=pthread_create(&id1,NULL, thread,(void*)&one);
    ret=pthread_create(&id1,NULL, thread,(void*)&two);
    ret=pthread_create(&id1,NULL, thread,(void*)&three);
    ret=pthread_create(&id1,NULL, thread,(void*)&four);
    if(ret!=0){
         printf ("Create pthread error!\n");
         return 1;
    }
    for(i=0;i<3;i++)
         printf("This is the main process.\n");
    pthread_join(id1,NULL);
    pthread_join(id2,NULL);
    pthread_join(id3,NULL);
    pthread_join(id4,NULL);
    return 0;
}

 注意thread和pthread_create的参数类型转换,以及extern “C”

分享到:
评论

相关推荐

    POSIX规范多线程代码示例

    在这个名为"POSIX规范多线程代码示例"的压缩包中,你将找到六个使用C++的POSIX线程库(pthread)编写的示例,它们逐步展示了如何在Linux和Windows环境下(使用Visual Studio,需添加-lpthread链接选项)创建和管理多...

    posix pthread windows 实现

    在Windows环境中,实现POSIX Pthread是为了在Windows平台上提供与UNIX/Linux相似的多线程编程接口,使得跨平台开发变得更加方便。Pthreads-win32是SourceWare项目的一部分,它为Windows提供了对POSIX线程库(pthread...

    c++pthread 线程封装

    本主题将深入探讨如何使用C++封装`pthread`库,以及在Linux环境下创建和管理线程。 首先,`pthread`库提供了`pthread_create`函数用于创建新的线程。这个函数接受一个`pthread_t`类型的指针,用来存放新创建线程的...

    经典c++多线程演示

    C++多线程是现代编程中的重要概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在本“经典C++多线程演示”中,我们将深入探讨C++11及后续标准引入的多线程库,如何创建、启动、调度、同步、挂起...

    Linux下的多线程

    ### Linux下的C语言多线程知识点详解 #### 一、多线程概念及重要性 在探讨具体的编程细节之前,我们首先需要理解为什么在Linux环境下使用C语言进行多线程编程是如此的重要。 1. **多线程的概念:** - 多线程是指...

    NDK中C++使用POSIX线程库调用java

    本示例主要讲解了如何在NDK中利用C++调用Java方法,并通过POSIX线程库实现多线程的生产者消费者模式。下面将详细阐述相关知识点。 1. **NDK与C++编程** NDK提供了一种在Android应用中集成原生代码的方式,使得...

    Programming with POSIX Threads(多线程编程PDF版本)

    在Unix系统和许多类Unix系统中,POSIX线程(POSIX Threads),通常称为Pthreads,是一种使用线程的编程接口,它允许程序设计者在C和C++这样的编程语言中实现多线程。使用POSIX线程库进行多线程编程,可以让开发者...

    C++11多线程demo

    在提供的"C++11_thread_demo"压缩包中,可能包含了几个简单的多线程示例,比如一个线程打印“Hello”而另一个线程打印“World”,或者一个线程计算斐波那契数列,另一个线程负责显示结果。这些示例可以帮助初学者...

    Linux多线程编程手册,linux多线程编程手册pdf,C,C++

    C++和C语言提供了丰富的接口来实现这一目标,特别是在Linux环境下,可以利用POSIX线程库(pthread)进行多线程编程。本手册专注于讲解如何在Linux系统中利用C和C++进行多线程开发,特别关注网络编程中的多线程应用。...

    C++,利用pthread,实践异步多线程程序

    适合人群:C++学习者,需要多线程程序示例的pthread学习者,pthread入门人员,对mutex与condition不熟悉的学习人员。 阅读建议: 首先熟悉在何处会打印哪句qDebug语句,有助于理解线程间通讯过程与mutex和...

    开源的win32平台c++多线程开发包

    综上所述,这个开源的win32平台C++多线程开发包提供了一个在Windows环境下编写多线程程序的解决方案,它基于C++语言和POSIX线程标准,通过`pthreadVC2.dll`和`pthreads`库实现了跨平台的线程功能。对于希望在Windows...

    pthread测试工程

    pthread是POSIX线程库,它是跨平台的多线程编程接口,被广泛应用于Linux、Unix和其他类Unix系统。在Windows环境下,通过第三方工具如MinGW或Visual Studio的C++ Linux开发工具,也可以使用pthread库进行开发。在这个...

    C++多线程的创建、终止.、连接和分离线程等pdf

    ### C++多线程基础与实现 #### 一、多线程的概念 多线程是多任务处理的一种特殊形式,其允许计算机同时运行两个或更多的程序。多任务处理有两种主要类型:基于进程的多任务处理和基于线程的多任务处理。 1. **基于...

    linux多线程编程指南

    - **POSIX线程(Pthreads)**:由POSIX标准定义的一种多线程编程接口,广泛应用于Linux和其他类Unix系统。 - **C/C++标准库支持:**通过标准库提供了多线程的支持,例如`&lt;thread&gt;`库。 - **多线程的益处:** - **...

    pthread多线程编程

    通过理解和掌握上述`pthread`多线程编程的知识点,开发者可以在Linux环境中创建高效的多线程应用程序,有效地利用多核处理器的计算能力。然而,多线程编程也带来了复杂性和挑战,例如同步问题和资源管理,因此在实践...

    linux下的多线程下载代码

    Linux系统提供了丰富的API和工具来支持多线程编程,其中最常用的是POSIX线程库(pthread)。pthread库提供了创建、同步和管理线程的一整套接口,例如`pthread_create`用于创建新线程,`pthread_join`用于等待线程...

    windows和linux读写锁C++实现

    总的来说,Windows和Linux下的读写锁实现虽然依赖于不同的系统API,但其核心思想是相同的,都是为了优化多线程环境下的并发访问。通过理解并熟练运用读写锁,开发者可以在保证数据一致性的同时,提升程序的运行效率...

    sun多线程编程 linux下多线程

    ### Linux下的多线程编程知识点详解 #### 一、多线程基础介绍 **定义多线程术语** - **线程**: 进程中的一个执行单元,共享进程的内存空间和其他资源。 - **多线程**: 在单个进程中创建多个线程的能力。 - **并发...

    linux 多线程编程笔记

    Linux下的多线程编程使用POSIX线程(pthread)标准,它定义了一套函数接口,如`pthread_create()`用于创建线程,`pthread_join()`用于等待线程结束,以及`pthread_detach()`用于将线程设置为分离状态。 3. **示例...

    c++ 跨平台线程 线程池

    - 需要考虑线程安全问题,如同步和互斥,确保在多线程环境下正确地操作数据结构。 - 调度策略也是线程池的关键,如优先级、公平性、动态调整线程数量等。 6. **性能优化**: - 线程池的大小不是固定不变的,可以...

Global site tag (gtag.js) - Google Analytics