美文网首页
C多线程 队列

C多线程 队列

作者: xiaose26 | 来源:发表于2019-12-02 11:34 被阅读0次

join,detach

thread::join(): 阻塞当前线程,直至 this 所标识的线程完成其执行。this 所标识的线程的完成同步于从 join() 的成功返回。
该方法简单暴力,主线程等待子进程期间什么都不能做。thread::join()会清理子线程相关的内存空间,此后thread object将不再和这个子线程相关了,即thread object不再joinable了,所以join对于一个子线程来说只可以被调用一次,为了实现更精细的线程等待机制,可以使用条件变量等机制。
thread::detach(): 从 thread 对象分离执行的线程,允许执行独立地持续。一旦线程退出,则释放所有分配的资源。调用 detach 后, *this 不再占有任何线程。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <sys/time.h>

pthread_mutex_t mut;
int i=0;

void print_num()
{
    while(1)
    {
        pthread_mutex_lock(&mut);
        i++;
        pthread_mutex_unlock(&mut);
        if(i<1000)
        {

            printf("%d\n",i);

        } else
            break;
        sleep(1);
    }

}

void print_str()
{
    while(1)
    {
        pthread_mutex_lock(&mut);
        i++;
        pthread_mutex_unlock(&mut);
        if(i<1000)
        {
            printf("---%d\n",i);
        } else
            break;
        sleep(1);
    }
}

int main()
{
    pthread_t t1,t2;
    pthread_mutex_init(&mut,NULL);
    printf("create\n");
    int temp;
    pthread_create(&t2,NULL,(void *)print_str,NULL);
    pthread_detach(t2);
    if((temp=pthread_create(&t1,NULL,(void *)print_num,NULL))!=0)
        printf("1 failed\n");
    pthread_join(t1,NULL);
    return 0;
}

//build :gcc test_thread.c -o test_thread.o -pthread

相关文章

  • c++ 实现 blocking queue

    阻塞队列就是多线程线程安全的队列,在多线程场景下经常用到,c++ 标准库里面没有提供阻塞队列,boost 中有提供...

  • C多线程 队列

    join,detach thread::join(): 阻塞当前线程,直至 this 所标识的线程完成其执行。th...

  • 队列和线程

    [iOS多线程中,队列和执行的排列组合结果分析] 多线程中的队列有:串行队列,并发队列,全局队列,主队列。 执行的...

  • 队列

    多线程队列 多进程队列

  • Thread

    队列 线程锁 多线程,线程池 队列 多线程爬虫示例 多线程 自定义线程 线程池

  • iOS - Multi-Thread

    概念篇 进程 线程 多线程 单核多线程 & 多核多线程 并行 & 并发 同步 & 异步 队列 队列 & 任务 的执...

  • RocketMQ消息队列还没入门就想放弃

    题外话 什么情况下的异步操作需要使用消息队列而不是多线程? 消息队列和多线程两者并不冲突,多线程可以作为队列的生产...

  • IOS多线程

    ios中常见的多线程方案: 多线程容易混淆的术语: 多线程各种队列的执行效果: Syn 往当前的串行队列中添加任务...

  • iOS多线程之GCD

    相关文章:iOS多线程之NSThreadiOS多线程之NSOperations 队列 队列和线程是两个不同的概念。...

  • iOS 网络开发

    多线程 NSThread GCD队列并发队列全局队列自己创建串行队列自己创建主队列任务:block函数sync:同...

网友评论

      本文标题:C多线程 队列

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