pthread_detach-pthread_create后子线程输出了两次

问题描述

pthread_create后子线程输出了两次

#include
#include
#include
#include
#include

void *start_handler(void *);

int main(void)
{
pthread_t tid;
int err;

    if(err = pthread_create(&tid, NULL, start_handler, NULL))
    {
            fprintf(stderr, "Create thread: %sn", strerror(err));
            return -1;
    }

    printf("OKn");

    return 0;

}

void *start_handler(void *arg)
{
int err;

    if(err = pthread_detach(pthread_self()))
    {
            fprintf(stderr, "Detach thread: %sn", strerror(err));
            pthread_exit((void *)-1);
    }

    printf("Start!n");

    pthread_exit((void *)1);

}

解决方案

输出了两次是什么?线程函数执行了,然后输出?

时间: 2024-08-06 02:04:10

pthread_detach-pthread_create后子线程输出了两次的相关文章

Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息

MainActivity如下: package cc.c; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.widget.TextView; /** * Demo描述: * * 示例步骤如下: * 1 子线程给子线程本身发送消息 * 2 收到1的消

prior-oracle 集合类型,取得前一个元素和后一个元素。这两个函数的输出真不理解

问题描述 oracle 集合类型,取得前一个元素和后一个元素.这两个函数的输出真不理解 DECLARE type jihe is table of number not null index by varchar2(20); a jihe ; begin a('x'):= 1111; a('y'):= 2222; a('z'):= 3333; a('b'):= 4444; dbms_output.put_line('================'); dbms_output.put_line

linux 把主线程cancel 掉后,由主线程创建的子线程会不会被cancel掉?

问题描述 linux 把主线程cancel 掉后,由主线程创建的子线程会不会被cancel掉? linux 把主线程cancel 掉后,由主线程创建的子线程会不会被cancel掉? 解决方案 不会.进程是独立的,不是线程.

ASP.net应用程序布置到服务器后,子线程无法启动的问题

问题描述 我的网站里面,应用程序的Global文件里面加了一个timer,在定时器事件里我写了启动三个子线程的操作.在开发机上,所有一切都运行正常,三个子线程的处理也都能正常进行.但是,当我把网站布置到VPS服务器后,三个子线程的处理却都没有进行.而且,log文件显示,timer事件是正常运行了的,也就是说它进行了启动子线程的处理,但是,就是没有任何结果,好像子线程没有启动起来.是不是需要有什么特殊的权限配置或者其他什么设置呢? 解决方案 解决方案二:把日志写在子线程的入口看看?解决方案三:每一

C#子线程执行完后通知主线程的方法_C#教程

其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿. 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就很简单了委托传值嘛: 下面有一个例子,子线程干一件事情,做完了通知主线程 public class Program { //定义一个为委托 public delegate void Entrust(string str); static void Main(string[] args) { Entr

C#串口收发数据,子线程更新textbox控件内容,一段时间后,界面卡死,请教问题原因所在

问题描述 1.现象描述:我自己用C#做了一个模拟流量计软件,下位机大概每100ms会发送一些数据(8字节),我的软件接收后,响应一个9字节的数据.数据的接收和发送都在richtextbox中显示出来.我开了一个子线程,这个线程每100ms去更新textbox控件内容,(就是先读取textbox的内容,在此基础上递增一个常量,再显示在textbox中),程序能够正常运行一段时间,然后就出现了界面卡死的现象,串口能够正常收发,richtextbox中的日志数据能够正常打印,但就是主界面死掉了,点什么

Android任意时刻从子线程切换到主线程的实现

引入 在Android开发中常常会遇到网络请求,数据库数据准备等一些耗时的操作:而这些操作是不允许在主线程中进行的.因为这样会堵塞主线程导致程序出现未响应情况. 所以只能另起一个子线程进行这些耗时的操作,完成后再显示到界面.众所周知,界面等控件操作只能在主线程中完成:所以不可避免的需要从子线程切换到主线程. 方法 对于这样的情况在Android 中比较常见的是使用AsynTask类或者 Handler来进行线程切换:而其中AsynTask是官方封装的类,较为简单,效率也比较可以,但是并不适合所有

【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目

备份短信和添加短信 操作系统短信的uri: content://sms/ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima28.backupsms" android:versionCode="1

iOS多线程的初步研究(四、五、六)--NSTimer--NSURLConnection子线程中运行 ---- NSOperation

iOS多线程的初步研究(四)-- NSTimer 理解run loop后,才能彻底理解NSTimer的实现原理,也就是说NSTimer实际上依赖run loop实现的. 先看看NSTimer的两个常用方法: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; //生成