C++培训教程概要1.ppt

C培训教程概要1

信号量,事件也可以跨进程使用 * Boost 线程库提供了 boost::call_once 来支持“一次实现”,并且定义了一个标志 boost::once_flag 及一个初始化这个标志的宏 BOOST_ONCE_INIT 。 * * targets是文件名,以空格分开,可以使用通配符。 command是命令行,如果其不与“target:prerequisites”在一行,那么,必须以[Tab键]开头,如果和prerequisites在一行,那么可以用分号做为分隔。 prerequisites是目标所依赖的文件。如果其中的某个文件要比目标文件要新,那么,目标就被认为是“过时的”,被认为是需要重生成的。这个在前面已经讲过了。 --command:规则的命令行 --是 make程序所有执行的动作(任意的 shell 命令或者可在 shell下执行的程序) --一个规则可以有多个命令行,每一条命令占一行。注意:每一个命令行必须以[Tab]字符开始 --prerequisites:规则的依赖。 --生成规则目标所需要的文件名列表。通常一个目标依赖于一个或者多个文件。 --target:规则的目标。 --通常是程序中间文件(.o)或者最后可执行文件名 --目标也可以是一个make执行的动作的名称,如目标“clean”,这样的目标是“伪目标 * * * Make自动推导:只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果make找到一个main.o,那么main.c,就会是main.o的依赖文件。并且 cc -c main.c 也会被推导出来。 * .PHONY意思表示clean是一个“伪目标”。而在rm命令前面加了一个小减号的意思就是,也许某些文件出现问题,但不要管,继续做后面的事。 clean的规则不要放在文件的开头,不然,这就会变成make的默认目标。 不成文的规矩是——“clean从来都是放在文件的最后”。 * 接下来的几个问题 boost::bind的参数都是传值的,对于传引用的情况如何解决。 boost::ref boost::cref boost::function 采用前天提到的any实现的方法来实现的 主要的目的是能够减少模板的嵌套次数 boost基础库 boost::any boost::tuple boost::utility 类型转换 - lexical_cast boost::bind / boost::function boost其他库 日期时间库 – boost::date_time 线程库 – boost::thread 异步IO库(socket等) – boost::asio 智能指针 –smart_ptr 正则式 – boost::regex tokenizer 随机数 – boost::random 线程库 – boost::thread 创建一个线程 最基本的办法 boost::thread th(FN); 利用线程池管理 boost::thread_group g; boost::thread* th = g.create_thread(FN); 线程库 – boost::thread 线程操作 等待线程结束 thread::join thread::timed_join thread_group::join_all 交权 – 让OS调度令外的线程 thread::yield – 静态函数 睡眠 thread::sleep – 静态函数 线程库 – boost::thread this_thread 命名空间 普通功能 get_id、sleep、yield at_thread_exit 中断处理 interruption_point、interruption_requested、 interruption_enabled、disable_interruption、 restore_interruption 线程库 – boost::thread 线程间通信 – 锁概念 Lockable Concept lock、try_lock、unlock TimedLockable Concept timed_lock SharedLockable Concept lock_shared、try_lock_shared、 unlock_shared、timed_lock_shared UpgradeLockable Concept 线程库 – boost::thread 线程间通信 – 锁类与方法 类 lock_guard unique_lock shared_lock upgrade_lock upgrade_to_unique_lock sco

文档评论(0)

1亿VIP精品文档

相关文档