C++ pthread_create 线程创建与传参(struct)

在JNI里边想用线程,结果发现C++线程的几个重要的点,暂时没找到合适的资料详细阐述这些知识点。花了点时间终于把线程的创建,参数传递搞清楚了,特意记录下来,希望对别人有帮助。

线程创建完整code

#include <stdio.h>
#include <pthread.h>
//数据传递的结构体
struct Param {
    int type;
    char *message;
};

void createThread() {
	//定义传递参数的结构体,注意这里的new操作,这里非常重要!
    Param *param = new Param();
    param->type = 1024;
    param->message = "thread message";
    //这里函数指针*threadFunc采用&threadFunc
    //参数void *data使用param指针
    pthread_create(&pt, NULL, &threadFunc, param);
}

//必须是static的静态函数
static void *threadFunc(void *data) {
	//参数需要做一次强转
    Param *param = (Param *)data;
    //日志打印,按照自己的需求处理。。
    print("Thread", "message = %s type = %d",param->message, param->type);
    pthread_exit(0);
    return NULL;
}

C++线程使用的注意点

1.复杂参数的传递需要使用结构体
2. 结构体初始化一定要用Param *param = new Param(); 用malloc(…);是不行的!
3. 线程实际执行的函数必须定义为static void *threadFunc(void *data),除了函数名称以外别的都必须一致
4. 取参数的时候需要做一次强转:Param *param = (Param *)data;

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值