cpp
Wayne557
这个作者很懒,什么都没留下…
展开
-
c语言实现主线程创建10个子线程,每个子线程不断+1,直到1000
面试被问到:c/c++语言实现主线程创建10个子线程,每个子线程不断+1,直到1000#include <pthread.h>#include <cstdio>//#include "sem.hpp"#include <assert.h>pthread_mutex_t mutex;int number = 0;//sem mysem;//sem_t mysem;void *worker(void* arg){ while(true){原创 2021-07-25 17:03:47 · 1002 阅读 · 1 评论 -
c++动手实现智能指针之shared_pointer
原理原理是用引用计数,每次调用构造函数,拷贝构造时引用计数加1,调用赋值运算符时引用计数也加1,但之前指向的对象的引用计数减1。当引用计数减少至0时才调用析构函数。具体地,该智能指针类里包含了两个指针,一个指向资源,一个计数,故大小为原始指针的两倍。代码实现template<typename T>class mySharedPointer{public: mySharedPointer(T* p):count(new int(1)),_ptr(p){ cou原创 2021-07-10 17:40:33 · 701 阅读 · 0 评论 -
gcc生成的unix可执行文件与默认生成的a.out区别
生成可执行文件大致包含两个步骤:编译源文件生成目标文件;链接目标文件以及库文件从而生成可执行文件。gcc -c选项指明编译sharing.c文件,默认生成的目标文件是以源文件命名,以.o为后缀的。gcc -c sharing.cgcc -o指明指明输出文件名称,并覆盖默认名称,其中编译时默认生成sharing.o,链接后默认生成a.out.gcc sharing.c -o sharing最后,sharing文件与a.out文件大小是一样的,个人猜测,它们文件内容是一样的,只是名称不同。原创 2021-06-04 11:56:23 · 892 阅读 · 0 评论