加文

希望是美好的……
随笔 - 0, 文章 - 209, 评论 - 0, 引用 - 0
数据加载中……

多线程编程的函数库支持

静态变量的访问需要序列化,因为静态变量时进程范围可见的。
无须序列化堆栈变量的访问,因为每个线程都有自己的堆栈。
标准的C运行库,只有有限的几个函数是可重入的,为了满足多线程编程的需要,必须提供可重入的函数库。C运行时函数库提供了其多线程版本的库,也就说单线程编程和多线程编程需要不同的函数库支持。
解释:
printf函数的运行:当一个程序开始执行时,startup代码自动打开三个标准流:标准输入流stdin,标准输出流stdout,标准错误流stderr,都是静态的,用户不能更改其值。stdout默认是输出到屏幕,printf要调用这个stdout变量,当多个线程同时调用printf函数,有可能引起问题。
C运行时函数库LIBCMT.LIB是创建多线程程序使用的,因此是可重入的。库MSVCRT.LIB,他调用共享的动态链接库MSVCRT40.DLL中的代码,也是可重入的。当你的引用程序调用这些库中的函数时,因遵循如下规则:1,调用必须使用C(——cdecl)调用方式;笔筒通过值传递或者指针传递为库函数传递参数。
关于可重入:代码可被多个线程共享。





posted on 2012-04-20 19:40 加文 阅读(448) 评论(0)  编辑 收藏 引用 所属分类: OS


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理