类中的 pthread 函数

2023-11-22

假设我有一堂课,例如

class c { 
    // ...
    void *print(void *){ cout << "Hello"; }
}

然后我有一个 c 向量

vector<c> classes; pthread_t t1;
classes.push_back(c());
classes.push_back(c());

现在,我想创建一个线程c.print();

以下给了我以下问题:

pthread_create(&t1, NULL, &c[0].print, NULL);

错误输出:无法将“void* (tree_item::*)(void*)”转换为“void*” (*)(void*)’ 对于参数 ‘3’ 到 ‘int pthread_create(pthread_t*, const) pthread_attr_t*, void* (*)(void*), void*)’


你不能按照你编写的方式来做,因为 C++ 类成员函数有一个隐藏的this传入的参数。pthread_create()不知道有什么价值this使用,因此如果您尝试通过将方法转换为适当类型的函数指针来绕过编译器,您将遇到分段错误。您必须使用静态类方法(它没有this参数),或者一个简单的普通函数来引导类:

class C
{
public:
    void *hello(void)
    {
        std::cout << "Hello, world!" << std::endl;
        return 0;
    }

    static void *hello_helper(void *context)
    {
        return ((C *)context)->hello();
    }
};
...
C c;
pthread_t t;
pthread_create(&t, NULL, &C::hello_helper, &c);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类中的 pthread 函数 的相关文章

随机推荐

  • 如何在 PHP 中解析和处理 HTML/XML?

    如何解析 HTML XML 并从中提取信息 Answer recommended by PHP Collective 原生 XML 扩展 我更喜欢使用其中之一原生 XML 扩展因为它们与 PHP 捆绑在一起 通常比所有第 3 方库更快 并为
  • python 从字符串创建切片对象

    我想从字符串创建一个切片对象 现在唯一的方法似乎是通过繁琐的 eval 语句 class getslice def getitem self idx return idx 0 eval getslice s 1 1 提前致谢 Edit 抱歉
  • 如何将 LatLng 实例发送到新意图

    我需要将 LatLng 类的实例传递给另一个意图 我该怎么做呢 这是代码 LatLng fromPosition new LatLng 23 4555453556 11 145315551 LatLng toPosition new Lat
  • Git Stash 和 Worktree 问题

    我很难让 Git 与我现有的用户定义工作树合作outside包含我的 git 目录的文件夹 基本上设置是这样的 我有两个目录 一个名为 git worktree 其中包含我想要跟踪的文件 另一个名为 git dir 其中包含存储库的 git
  • Android 中的假电话

    HI all 我想在android中开发一个假电话应用程序 单击按钮后 我必须在给定时间段内收到假电话 有什么办法可以做到这一点吗 有任何线索或示例代码 请让我知道 提前致谢 安卓是开源的 用它 In the git 存储库上的手机应用程序
  • Flutter - 在没有 Firebase 身份验证的情况下将 Firebase 通知推送给特定用户

    我正在使用 Firebase 来推送通知 并且我不在我的应用程序上使用 Firebase 身份验证 我有自己的系统 我没有找到这个问题的答案 是否可以在没有 Firebase 身份验证 因此没有 UID 的情况下使用 Firebase 将通
  • 每个 DocumentStore 的 WaitForNonStaleResults

    有没有办法告诉RavenDb对某些DocumentStore或DocumentSession的所有查询使用WaitForNonStaleResults模式 您可以使用DefaultQueryingConsistency Consistenc
  • 如何使用python和Opencv读取视频文件

    我正在使用 python 2 7 和 opencv2 4 读取 avi 文件 我使用的是 windows 10 我的示例代码是 import numpy as np import cv2 cap cv2 VideoCapture video
  • 将 ObjectMapper 声明为 bean 有什么好处?

    假设我只想要一个简单的实例ObjectMapper目的 将其声明为 bean 有什么好处吗 Bean public ObjectMapper objectMapper return new ObjectMapper 为什么不直接制作一个新的
  • 扫描仪与 BufferedReader

    据我所知 在Java中从文件中读取基于字符的数据的两种最常见的方法是使用Scanner or BufferedReader 我也知道BufferedReader通过使用缓冲区来有效地读取文件 以避免物理磁盘操作 我的问题是 Does Sca
  • 阻止 OS X 使用 Python 进入睡眠状态?

    有没有办法防止运行 OS X 的计算机在 Python 脚本中进入睡眠状态 您可以使用内置的咖啡因酸盐命令 subprocess Popen caffeinate 这就是我的使用方式 import sys import subprocess
  • 如何提高 IIS / ASP.Net 的启动性能

    我正在使用一个特别慢的虚拟网络主机 名称保留 其中磁盘性能可能非常糟糕 因此 第一次访问我的 ASP Net 网站可能需要 1 分钟以上的时间才能加载 初始加载后 一切都在 RAM 中 一切正常 我想知道是否有人知道如何指示 IIS 预加载
  • Epplus SetPosition图片问题

    我在用Epplus库在 Asp Net C 中生成 Excel 2010 及更高版本兼容的文件 我使用的是目前最新的版本 3 1 2 在添加任何图片之前 我首先设置行高 ExcelPackage pck new ExcelPackage v
  • IdHttp 只需获取响应代码

    我正在使用 idhttp Indy 进行一些网站检查 我想要它做的就是在发送请求后检查服务器的响应代码 我不想实际上必须从服务器接收 HTML 输出 因为我只监视 200 OK 代码 任何其他代码意味着存在某种形式的问题 我查阅了 idht
  • iPad 方向更改问题

    我的 iPhone 应用程序在 iPad 上运行时显示一些关于支持方向更改的奇怪行为 该应用程序以视图控制器 为了论证起见 将其称为视图 A 和导航控制器启动 并且 shouldAutorotateToInterfaceOrientatio
  • 如何获取 WPF 窗口的静态引用?

    我尝试了很多方法来在程序中获取窗口的静态引用 我需要在运行时从不同的类访问其所有成员 因此需要静态引用 我想要的是类似的东西Program Window1 where Core是静态的并且MyWindow是其静态成员之一 在 WinForm
  • 如何在应用程序启动时运行回调?

    我知道 Android 的 Activity 模型与我通常认为的 应用程序 有点不同 当我的应用程序 启动 时 我想做一些事情 在这种情况下 检查服务器上的一些通知并显示它们 如果可用 实现这一目标的好方法是什么 我可能不想在活动的 OnC
  • FX 19 中组合框焦点问题

    升级到最新的 JavaFX 版本 19 后 我遇到了一些奇怪的问题 如果我将最后一个选项设置为 ComboBox 中的值 那么在第一次打开时 如果我选择任何选项 下拉列表将不会隐藏 之后 下拉菜单将像往常一样工作 奇怪的是 只有当我将最后一
  • 为什么javascript getMonth 从 0 开始计数,getDate 从 1 开始计数?

    这个问题纯粹是为了满足我的好奇心 在 JavaScript Date 对象中 当您调用getMonth 它返回月份 但从 0 开始计数 0 January 1 February 但当你打电话时getDate 它从 1 开始计数 1 1 2
  • 类中的 pthread 函数

    假设我有一堂课 例如 class c void print void cout lt lt Hello 然后我有一个 c 向量 vector