`

线程返回值传出

 
阅读更多
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>

void printId(const char* s)
{
    pid_t pid = getpid();
    pthread_t tid = pthread_self();
    printf("%s pid %u tid %u (0x%x)\n",s,(unsigned int)pid,(unsigned int)tid,(unsigned int)tid);
}

void* testThread(void* /*p*/)
{
    printId("new  thread:");
    //将返回值传出
    pthread_exit((void*)"thread finished");
    return 0;
}

int main()
{
    pthread_t pid;
    pthread_create(&pid,NULL,testThread,NULL);
    void* ret = NULL;
    pthread_join(pid,&ret);
    printId("main thread:");
    printf("ret:%s",(char*)ret);
}

new  thread: pid 20959 tid 3077462896 (0xb76e5b70)
main thread: pid 20959 tid 3077469904 (0xb76e76d0)
ret:thread finished
分享到:
评论

相关推荐

    linux系统编程之线程.zip

    注意:不应使用全局变量 pthread_t tid,在子线程中通过pthread_create传出参数来获取线程ID,而应使用pthread_self。 pthread_create函数 创建一个新线程。 其作用,对应进程中fork() 函数。 int pthread_create...

    Linux系统编程之线程同步

    参1:传出参数,调用时应传 &mutex restrict关键字:只用于限制指针,告诉编译器,所有修改该指针指向内存中内容的操作,只能通过本指针完成。不能通过除本指针以外的其他变量或指针修改 参2:互斥量属性。是一...

    Qt5_QThread_信号传递

    由于只有UI主线程才可以操作桌面UI,那么在多线程中,其它线程的数据若要显示出来,可以通过全局共用变量来实现,或者通过线程通信的方式来实现,本例程就是通过UI上的按钮启动线程,在线程中发送信号到UI主线程,并...

    COM特殊数据类型使用演示

    1. 错误处理:由于COM接口通常是无异常的,错误通常通过返回值或传出参数表示,因此要确保正确处理错误返回。 2. 内存管理:COM数据类型通常需要手动管理内存,不正确的释放可能导致内存泄漏或系统崩溃。 3. 类型...

    c#中调用vc写的格尔dll的示例程序

    5. **错误检测和返回值**:VC++的DLL函数可能通过返回值和/或传出参数来报告错误。在C#中,需要检查这些返回值和参数,以确定调用是否成功。 6. **默认和变体调用约定**:C#默认使用stdcall调用约定,而VC++中默认...

    C# Windows API

    1. 错误处理:许多API函数会通过返回值或传出参数报告错误。例如,`CreateFile`函数可能会返回一个无效的句柄,这时需要检查并处理错误。 2. 安全性:使用API函数时,要特别注意内存管理和线程安全,避免资源泄漏和...

    epoll底层.zip

    返回值是就绪描述符的数量,且在传出参数中提供就绪描述符列表。 ### 4. epoll的事件模型 epoll使用红黑树存储待监控的文件描述符,并使用链表存储就绪的描述符。这种数据结构使得添加、删除和查找操作的时间...

    CodeFellowsChallenge:CodeFellows 挑战的所有文件

    3. **函数**:函数是JavaScript中可重用的代码块,可以通过参数传递数据,并通过返回值传出结果。函数表达式、箭头函数和函数声明是三种定义函数的方式。函数也可以作为一等公民,可以赋值给变量、作为参数传递和...

    宋劲彬的嵌入式C语言一站式编程

    2. 传入参数与传出参数 3. 两层指针的参数 4. 返回值是指针的情况 5. 回调函数 6. 可变参数 25. C标准库 1. 字符串操作函数 1.1. 初始化字符串 1.2. 取字符串的长度 1.3. 拷贝字符串 1.4. 连接字符串 1.5. 比较字符...

    core-[removed]核心JavaScript概念初学者到高级

    它们是可重用的代码块,可以通过参数传递数据,并通过返回值传出结果。函数表达式、箭头函数和函数声明是三种定义函数的方式,各有其特点和应用场景。 对象是JavaScript的核心特性,它是一种键值对的集合。你可以...

    c++编程规范1

    使用STL时,需注意线程安全问题,例如32位平台下的`std::string`可能存在线程安全问题。建议在熟悉STL后使用,避免陷阱。对于全局函数,如`snprintf`,推荐使用`::`前缀以明确其来源。 5. **类和构造函数**:构造...

    :video_game:苹果金属框架的C绑定/包装

    4. **错误处理**:在Objective-C中,许多方法会返回一个NSError对象来报告错误,而在C绑定中,我们通常会通过返回值或传出参数来表示错误情况。 5. **安全性**:由于C语言的特性,需要特别关注缓冲区溢出、空指针...

    为什么说要搞定微服务架构,先搞定RPC框架

    - **服务端**:包含服务端组件、收发包队列、I/O线程、工作线程、序列化/反序列化、上下文管理器、超时管理、异步回调等。 这些组件共同协作,以确保高效、可靠的服务间通信。 #### 四、结论 综上所述,RPC框架是...

    C语言中socket相关网络编程函数小结

    返回值为新创建的socket句柄,失败时返回-1,并设置`errno`为相应的错误代码,如EPROTONOSUPPORT、ENFILE或EMFILE等。 2. `connect()`函数: `connect()`函数用于将socket连接到指定的网络地址。原型如下: ```c...

Global site tag (gtag.js) - Google Analytics