linux下加载多线程失败,linux下多线程踩过的坑(不定更新)

1,多线程下整个进程的退出

<>关于进程环境一章中指出了进程退出的8个条件:

...

(4)最后一个线程从启动例程中返回

(5)最后一个线程调用pthread_exit()返回

...

这些条件一个前提是,主线程在等待子线程返回,若没有等待,则是主线程退出,整个进程直接退出了。其实主线程在等待子线程时,是阻塞到join()上了,最后也是主线程最后退出,整个进程也结束了。

主线程

...

{

pthread_create(...)

//打印 “In the main”

sleep();

}

子线程

...

{

//打印 “I am First”

sleep();

//打印 “I am Second”

}

这样子线程中的第二句话,永远也打印不出来;当去掉主线程中的sleep(1)后,子线程中的第一句话有时能打印出来,有时不能打印出来,第二句话永远也打印不出来,其实这里的sleep(1)起到了一个类似join()的作用。

多线程中切记一定要在主线程中join()子线程,也不要对sleep(...)产生任何信任,说不定子线程运行一半就退出了。

(2)多线程中的打印函数切记一定是没有输入缓冲的。

当我用cout,fprintf等函数往控制台上输出时,一开始还是正确的,当我不断运行同一个程序时,就会产生问题,有些语句输出了两次,如I am second连续打印了两次,有时候两句话输出到了同一行(就是endl没有起作用),我猜想因为这些函数是带有输入缓冲的。

改用了

#include

size_t write(int filedes, const void* buf, size_t bufsize);

函数后,就没有上面的问题了。

多线程中这种写日志的信息,我想应该用系统不带缓冲的I/O,而别去使用标准库I/O。

&lbrack;转载&rsqb;解决linux 下多线程错误 undefined reference to &grave;sem&lowbar;init&&num;39&semi;

转自:https://blog.csdn.net/yzycqu/article/details/7396498?utm_source=copy 解决linux 下多线程错误 undefined ref ...

java 多线程踩过的坑

多线程踩坑记录:1.多线程切记不可以同时操作同一个原子数据.解释:存在一个条数据库A数据,不可以在2个或2个以上的线程中同时操作A数据.会引发重复操作.2.多线程操作方法不要加synchronized ...

Linux下多线程下载工具 - Axel

Axel 是 Linux 下一个不错的HTTP/FTP高速下载工具.支持多线程下载.断点续传,且可以从多个地址或者从一个地址的多个连接来下载同一个文件.适合网速不给力时多线程下载提高下载速度.比如在国 ...

Linux下多线程编程

一.为什么要引入线程? 使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式.在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维 ...

Axel linux下多线程下载工具

Axel 是 Linux 下一个不错的HTTP/FTP高速下载工具.支持多线程下载.断点续传,且可以从多个地址或者从一个地址的多个连接来下载同一个文件.适合网速不给力时多线程下载提高下载速度.比如在国 ...

Linux下多线程下载工具myget

[root@superdba ~]# mytgetMytget 0.0.99: A download accelerator for GNU/LinuxUsage: mytget [options]. ...

linux下多线程断点下载工具-axel

今天要下载一下14G左右的文件,用wget约10小时,后来发现linux下有个多线程支持断点续传的下载工具axel,试了一下,下载速度大大增加. 包地址:http://pkgs.repoforge.o ...

Linux下多线程复制文件(C)

Linux下实现多线程文件复制,使用提供的函数: int pthread_create(pthread_t *thread,const pthread_attr_t ...

linux下多线程互斥量实现生产者--消费者问题和哲学家就餐问题

生产者消费者问题,又有界缓冲区问题.两个进程共享一个一个公共的固定大小的缓冲区.其中一个是生产者,将信息放入缓冲区,另一个是消费者,从缓冲区中取信息. 问题的关键在于缓冲区已满,而此时生产者还想往其中 ...

随机推荐

【转】Android 底层开发的几点

我干了3年Android sdk开发,觉得到了瓶劲没法更进一步,于是花了一年多点时间,大概摸到点门径.根据前辈的经验,Android底层完全入门需要两年. 先说下我的入门过程:第零步,下载源码,我下的 ...

linux 压缩 解压zip 命令

将当前目录下的所有文件和文件夹全部压缩成test.zip文件,-r表示递归压缩子目录下所有文件zip -r test.zip ./* 打包目录zip test2.zip test2/*解压test.z ...

SSO单点登录

登录持久化机制:Cookies&&Session Cookie:是将信息存储到客户端,所有的信息不安全,都会对信息进行加密,cookies中会存储当前会话的唯一标识,即SessionI ...

iscroll&period;js &amp&semi; flipsnap&period;js

两个js都可以用做手机的滑动框架iscroll.js功能更多flipsnap.js应该只能水平滑动. iscroll.js介绍http://iiunknown.gitbooks.io/iscroll- ...

实现接口IDisposable的示例

想使用using(...), 如: using (Getter process = new Getter()) { //... } 就必须给类实现接口IDisposable public sealed ...

1-5 hibernate学习笔记&lpar;11-14章&rpar;

一,概念详解 1.持久化persistent 是指将内存中的数据保存到磁盘.数据库等存储设备中. 2.持久化对象:已经储存到磁盘或者数据库中的业务对象. 3.在java中对对象的持久化有三种方法: 1 ...

NHibernate的基本使用

一.O/R Mapping 概论 工厂模式+反射+每个数据库的DAL层来解决数据访问层的代码 针对数据库表中字段的变化我们是无法预料的,所以每一次用户需求的修改都会直接导致我们程序员来修改—实体类(B ...

ubuntu14&period;04系统中virtualbox安装Oracle VM VirtualBox Extension Pack包

ubuntu14.04系统中virtualbox默认不支持usb设备,需要安装Oracle VM VirtualBox Extension Pack才行,但必须安装以下版本才可以安装成功: Oracl ...

Recycle----项目总结

github项目地址:https://github.com/HuChengLing/recycle 软件规模: 我们这个Recycle app属于一个小型项目,整体规模不大.预期有垃圾回收和二手品交易 ...

JavaScript高级程序设计学习&lpar;二&rpar;之基本概念

任何语言的核心都必然会描述这门语言基本的工作原理.而描述的内容通常都要涉及这门语 言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念.如前所述, ECMA-262通过叫做 ECMAS ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值