美文网首页
linux thread

linux thread

作者: 追梦人在路上不断追寻 | 来源:发表于2020-10-24 19:06 被阅读0次

    线程库

    POSIX线程库是用于C / C ++的基于标准的线程API。它允许产生新的并发流程。它在多处理器或多核系统上最有效,在多核或多核系统中,可以将流程调度为在另一个处理器上运行,从而通过并行或分布式处理提高速度。线程比“派生”或生成新进程所需的开销更少,因为系统不会为进程初始化新的系统虚拟内存空间和环境。尽管在多处理器系统上最有效,但在利用I / O和其他系统功能中的等待时间(可能会中断进程执行)的单处理器系统上也能找到收益。(一个线程可能在另一个线程正在等待I / O或其他系统延迟时执行。)并行编程技术(例如MPI和PVM)用于分布式计算环境中,而线程则限于单个计算机系统。进程内的所有线程共享相同的地址空间。通过定义一个函数及其参数来生成线程,该函数及其参数将在该线程中进行处理。在软件中使用POSIX线程库的目的是为了更快地执行软件。

    thread 创建

    #include <stdio.h>
    #include <stdlib.h>
    #include <pthread.h>
    
    void *print_message_function( void *ptr );
    
    main()
    {
         pthread_t thread1, thread2;
         const char *message1 = "Thread 1";
         const char *message2 = "Thread 2";
         int  iret1, iret2;
    
        /* Create independent threads each of which will execute function */
    
         iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1);
         if(iret1)
         {
             fprintf(stderr,"Error - pthread_create() return code: %d\n",iret1);
             exit(EXIT_FAILURE);
         }
    
         iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2);
         if(iret2)
         {
             fprintf(stderr,"Error - pthread_create() return code: %d\n",iret2);
             exit(EXIT_FAILURE);
         }
    
         printf("pthread_create() for thread 1 returns: %d\n",iret1);
         printf("pthread_create() for thread 2 returns: %d\n",iret2);
    
         /* Wait till threads are complete before main continues. Unless we  */
         /* wait we run the risk of executing an exit which will terminate   */
         /* the process and all threads before the threads have completed.   */
    
         pthread_join( thread1, NULL);
         pthread_join( thread2, NULL); 
    
         exit(EXIT_SUCCESS);
    }
    
    void *print_message_function( void *ptr )
    {
         char *message;
         message = (char *) ptr;
         printf("%s \n", message);
    }
    

    线程基本概念

    • 线程操作包括线程创建,终止,同步(联接,阻塞),调度,数据管理和流程交互。
    • 线程不维护已创建线程的列表,也不知道创建该线程的线程。
    • 进程内的所有线程共享相同的地址空间。
    • 如果确定,pthread函数将返回“ 0”。

    相关文章

      网友评论

          本文标题:linux thread

          本文链接:https://www.haomeiwen.com/subject/zurwmktx.html