关于每个线程都有各自的errno的测试

原创 2012年03月27日 16:19:47

/*********************************************************************
 * Author  : Samson
 * Date    : 03/27/2012
 * Test platform:
 *               GNU Linux version 2.6.29.4
 *               gcc version 4.4.0 20090506 (Red Hat 4.4.0-4) (GCC)

 * *******************************************************************/

前面说到,每个线程都有各自的errno,为了确认是否如此,写如下测试代码进行测试。


//Each thread has an error value, this test function is check


#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <pthread.h>

void *thread_fun (void *arg)
{
    int arg1 = (int)arg;
    errno = arg1 + 1;
    printf ("thread %d errno is %d\n", arg1, errno);
    return arg;    
}

int main()
{
    pthread_t pthread_id[3];
    int status, i;
    void *thread_result;

    printf ("main errno is %d\n", errno);
    errno = 12;
    for (i = 0; i < 3; i++)
    {
        status = pthread_create (&pthread_id[i], NULL, thread_fun, (void *)i);
        if (status != 0)
        {
            printf ("pthread_create %d thread is error\n", i);
            abort ();    
        }
    }
    for (i = 0; i < 3; i++)
    {
        status = pthread_join (pthread_id[i], &thread_result);
        if (status != 0)
        {
            printf ("pthread_join %d thread error\n", i);
            abort ();
        }
    }
    if (thread_result == NULL)
    {
        return 0;    
    }
    else
    {
        return 1;    
    }

}


编译运行结果为:

main errno is 0
thread 0 errno is 1
thread 2 errno is 3
thread 1 errno is 2

可见,每个线程的errno值都是各自有一个的。


每个线程都有一个堆栈那么,这个堆栈多大呢?

设置线程堆栈大小 每个线程都有一个堆栈那么,这个堆栈多大呢? HANDLE CreateThread(        LPSECURITY_ATTRIBUTES lpThread...

Windows是不是每个线程都有消息队列的问题

今天从网上搜集了下,加上试了一个小程序,感觉下面的一种说法是比较准确地。http://cnn237111.blog.51cto.com/2359144/606954     在Windows应用程序...
  • gukesdo
  • gukesdo
  • 2011年09月04日 21:17
  • 2063

设置线程堆栈大小 每个线程都有一个堆栈那么,这个堆栈多大呢?

每个线程都有一个堆栈那么,这个堆栈多大呢? HANDLE CreateThread(        LPSECURITY_ATTRIBUTES lpThreadAttributes,    ...

每个线程都有自己的信号屏蔽字,但是信号的处理时进程中所有线程共享的http://bbs.csdn.net/topics/350222437

新手小白看《unix环境高级编程》  有点困惑       一个进程不是只有一个信号屏蔽字吗?一个进程可以创建多个线程,那么多个线程共享一个信号屏蔽字呀,为什么书上12.8节里说“每个线程都有自己的...

关于java多线程浅析三:每个对象都有的方法

先明确一下一些基本的概念。 1 串行、并行与并发的区别: 不搞那些晦涩的定义,讲一个简单的例子,可能不恰当,但基本上是这个意思。 就拿一个很简单的例子来说吧,下班回家后,你想做饭,但你又想打晋级...

Kettle7 ( Pentaho Data Integration )源码分析 每个step都有一个线程负责运行

Kettle 7 要求Java环境是Java 8 Kettle中的Transformation中包含多个step组件, 当运行transformation时, 这些组件并不是串行初始化的(数据!是在...

errno(3) 线程局部变量

注意 NOTEA common mistake is to do一个常见的错误是像下面这样if (somecall() == -1) { printf("somecall() failed\...

通过查看每个线程所占用的CPU时间

通过查看每个线程所占用的CPU时间缩小到具体线程,然后跟代码调试找到的。[喝小酒的网摘]http://blog.const.net.cn/a/17246.htm 在proc/pid/task下包含了...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于每个线程都有各自的errno的测试
举报原因:
原因补充:

(最多只允许输入30个字)