`
JoyForce
  • 浏览: 1139 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

linux下用c++产生线程

阅读更多

 

在c++编译环境下编译pthread_create会报错,出现问题的主要原因就是pthread_create的第3个参数——void*(void*)这个回调函数。
下面给出解决方法:

将要调用的函数改成静态函数或全局函数:

 

#include <iostream>
using namespace std;
#include <pthread.h>
void *Bar(void *arg)
{
        cout << __PRETTY_FUNCTION__ << endl;
}

class Foo {
public:
        Foo();
        ~Foo();
        static void * Bar(void *arg);
private:
        pthread_t tid_self;
        pthread_t tid_other;
};

Foo::Foo()
{
        pthread_create(&tid_self, NULL, &Bar, NULL);
        pthread_join(tid_self, NULL);
        pthread_create(&tid_other, NULL, &::Bar, NULL);
}

Foo::~Foo()
{
        pthread_join(tid_other, NULL);
}

void * Foo::Bar(void *arg)
{
        cout << __PRETTY_FUNCTION__ << endl;
}

int main(int argc, char *argv[])
{
        Foo foo;
        return 0;
} 

若要调用类的成员,则用如下方法:

将传递的参数定义为struct:

 

struct myarg{
     //其他参数
     Foo* pFoo;
}

 然后在函数调用中:

 

void*Foo::Bar(void*arg) 
{  
         struct myarg* parg =  (struct myarg*) arg;
          Foo* pFoo = parg->pFoo;
          //下面就可以调用Foo的成员变量了
}
 

 

 

分享到:
评论

相关推荐

    Linux c++多线程串口编程demo

    通过这个demo,你可以学习如何在Linux环境下使用C++进行多线程串口编程,理解线程同步的概念,以及如何处理硬件交互。对于理解和应用这些技术,阅读和分析源代码将是至关重要的。同时,这个项目也可以作为进一步研究...

    linux c++ 守护线程,判断程序是否运行,不存在就启动

    在Linux系统中,C++编程时常常需要创建守护线程(daemon thread)来执行特定的任务,比如监控系统状态、定时任务或确保某个服务始终运行。守护线程是一种长期运行的后台进程,它不依赖于终端会话,即使用户注销或者...

    socket linux c++ 多线程3

    "VC多线程编程.CHM"可能包含有关在Windows环境下使用Visual C++进行多线程编程的信息,虽然与Linux环境不同,但理解不同的操作系统下的线程实现有助于跨平台开发。 另外,"第8章_Socket编程初步.ppt"可能包含关于...

    C++实现的Linux多线程聊天室

    本项目以C++语言在Linux环境下实现了一个多线程聊天室,利用了Linux系统强大的多线程支持和C++的高效编程能力。下面我们将详细探讨这一实现过程中的关键知识点。 首先,我们要理解多线程的概念。在单线程程序中,...

    C++ 定时器 线程的使用

    本项目提供了一个简单的C++定时器与线程使用的示例,对于初学者来说是一个很好的学习起点。下面将详细解释这两个概念以及它们在C++中的实现方式。 首先,我们来了解一下**定时器(Timer)**。定时器主要用于在指定的...

    linux c++ socket 多线程1

    本文将深入探讨Linux环境下的C++ Socket网络编程和多线程技术,基于提供的资料列表进行详细解析。 首先,"C++_Socket网络编程大全"是关于使用C++进行Socket编程的全面教程。Socket是网络通信的基础,它为应用程序...

    Linux C/C++线程基类源代码

    总结来说,这个“Linux C/C++线程基类”源代码项目提供了一个便捷的线程管理框架,使得在Linux环境下使用C++进行多线程编程变得更加简单和直观。通过理解和利用这个基类,开发者可以专注于业务逻辑,而无需关心底层...

    Linux下使用EPoll+队列+多线程的C++实现

    在这个“Linux下使用EPoll+队列+多线程的C++实现”项目中,开发者使用了`epoll`来监听并管理TCP服务器的连接。`epoll`的工作流程大致如下: 1. **创建epoll句柄**:首先,通过`epoll_create()`函数创建一个epoll...

    linux c++线程demo

    linux c++线程demo

    C C++ Linux多线程文件程序

    基于linux下的c/c++程序,多线程,断点续传功能没有实现, 可传输大于2G的文件。 设计思想:预先分配的N个缓冲区形成类似循环队列。 【1】预先分配N个缓冲区,多线程方式对缓冲区进行读写互斥,有类似生产者消费者的...

    linux下的c++编程实验

    Linux下的C++编程是现代软件开发中的重要技能,特别是在服务器端、嵌入式系统和开源项目中。Linux操作系统以其开放源代码、强大的性能和灵活性,为C++开发者提供了丰富的资源和工具。本实验旨在帮助你熟悉Linux环境...

    c/c++ 记录日志,支持windows和linux,支持多线程

    打日志用的,经过了windows和linux下的测试,支持多线程,附上了实例,此实例在windows下运行只要加到win32控制台程序里就行了,记得去掉预编译头,在linux下测试,只要make 就行了,makefile已经在压缩包里了

    LinuxWindows平台C++多线程及定时器毕业论文.docx

    Windows 平台上使用的是 Win32 API,而 Linux 平台上使用的是 POSIX 线程。这些差异导致了多线程编程中的平台差异问题。 Linux 定时器的实现: Linux 平台上没有方便而高效的定时器,给程序开发带来了极大的不便。...

    linux c++ socket 多线程2

    第二套:c语言Socket编程C语言SOCKET编程指南.c语言多进程多线程程.pdf,Linux Socket rogramming by Example.pdf,Linux 多线程等10多个资料....

    rk3588rk3588s使用c++多线程异步等优化c++实现源码(yolov5运行可达到142fps)+项目使用说明.zip

    rk3588rk3588s使用c++多线程异步等优化c++实现源码(yolov5运行可达到142fps)+项目使用说明.zip 【资源介绍】 该项目为c++实现, 大体改自rknpu2 使用线程池异步操作rknn模型, 提高rk3588/rk3588s的NPU使用率, 进而...

    C++对windows/linux线程的简单封装

    总的来说,"C++对windows/linux线程的简单封装"涉及到了如何使用C++标准库的`std::thread`结合Windows API(如`CreateThread`)和Linux API(如`pthread_create`)实现跨平台的线程管理。这需要对操作系统内核的线程...

    Linux多线程服务端编程:使用muduo C++网络库

    本书主要讲述采用现代C++ 在x86-64 Linux 上编写多线程TCP 网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。这是在Linux 下以native 语言编写用户态高性能...

    c++多线程编程

    ### C++多线程编程知识点概述 #### 一、Pthread简介及基本概念 - **Pthread**: POSIX Threads 的简称,是一种跨平台的线程管理API,在多种操作系统中都有实现,包括Linux、macOS等。它遵循POSIX(Portable ...

    在C++中使用openmp进行多线程编程

    对于C++而言,当我们需要使用多线程时,可以使用boost::thread库或者自从C++ 11开始支持的std::thread,也可以使用操作系统相关的线程API,如在Linux上,可以使用pthread库。除此之外,还可以使用omp来使用多线程。...

    Linux多线程服务端编程-使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

Global site tag (gtag.js) - Google Analytics