01 2017 档案
摘要:先上代码看下错误的例子: 编译提示:./include/thread_pool.h:31:5: error: unknown type name ‘thpool_handle_t’ 修改如下解决:
阅读全文
摘要:直接上代码: 在main函数中会先创建两个wait thread, 然后在创建两个post线程,运行多次会发现pthread_cond_signal丢失的显现,如下图: 可以发现执行post的条件是获取mutex, 这个mutex是所有情况大家都共用的,所以就会存在可能:wait 和 post都在等
阅读全文
摘要:首先第一个区别条件变量有广播的功能,所以当实现订阅的时候,需要广播事件的时候必须使用条件变量,而semaphore只能出发一个订阅 有人这么说: Conditional variable is essentially a wait-queue, that supports blocking-wait
阅读全文
摘要:Bionic 是一个BSD标准的C库,用在android平台上面的。 Android 是一个不完全开源的系统。 android的kernel使用的是基于linux的,linux使用的是GPL2的开源标准, 但是这种标准具备传染性,使用这个标注的软件不能收费。 android的设计是希望第三方的公司帮
阅读全文
摘要:一年多过去啦,一段时间没有posix多线程的东西,又忘记的差不多略,我打记性咋这么差,丝毫记不起来怎么用啦,还是不如烂笔头啊。 大家都知道条件变量需要配合mutex一起使用,往往是这样的:lock->signal->unlock, 而另一边呢是: lock->wait->unlock. 在调用pth
阅读全文
摘要:使用trace-cmd有的时候没有来得及使用ctrl+c, 导致出现多个trace.dat.cpu*, 可以使用下面的办法来手动合并trace.dat
阅读全文
摘要:首先看一段代码 我跑在ubuntu16.04, 输出的结果是: 但是同样的程序跑在ubuntu14.04的虚拟机上,运行的结果是: mempcy 组内拷贝看起来是不安全的。需要进一步研究。 不同的公司对于stdlib function的实现不同,像这种内存重叠的拷贝需要使用api memmove()
阅读全文