所在位置:主页 > 程序语言 > C++多线程编程要用到哪些库?如何编译这些库?

C++多线程编程要用到哪些库?如何编译这些库?

发布时间:2023-12-28 21:39来源:www.sf1369.com作者:宇宇

一、C++多线程编程要用到哪些库?如何编译这些库?

千万别以为现在的C++没有原生的多线程库

OpenMP 是一个多线程库,不过他还需要编译器的支持,好在现在绝大多数都已经支持(这个可能是目前最流行的原生多线程库了)

C++的标准头process.h(太老的没有,2002年后的基本都有)中有操作进程和执行环境的函数,能实现简单的进程级或线程级并行操作。

使用起来非常非常方便。windows平台的C语言编译工具也都有这个头,unix平台上的unistd.h跟这个头很相似,函数名与用法也基本一样。

还有一些其他的第三方多线程库,你可以网上搜搜,但是注意是否跨平台等问题

如果你要使用操作系统相关的多线程API,那么也就没什么选择余地,windows上只能用windows的多线程API (参考MSDN) unix同理

OpenMP的优点是跨平台,功能丰富强大(例如提供了各种锁、信号等),代码改动也比较小,使用起来也非常方便快捷。缺点是没有像直接用系统API时透明感,毕竟使用系统API时,程序员完全控制了逻辑,非常直观,当然这也带来了错误风险和代码复杂度

二、跨语言编程除了用dll,shell,API还有哪些方法?

动态链接库DLL

COM组件DLL/OCX

Activex组件

.NET/J2EE等提供中间语言的工具

通过特定关键字实现语言间共享

还有很多方法,这些是最常见的

三、SQL跨库查询语句

首先你的要求不明确..要是按照你的要求的话 以下语句就可以解决了

跨库中只要用.来表示就可以了db.table这样来表示某库某表

select odername from db2.t1 where db2.t1.oderid = db1.t2.oderid

修改:

select odername from db2.t1 where db2.t1.oderid in (select orderid from db1.t2 where db1.t1.userid = db1.t2.userid and db1.t1.username = 用户名)

四、ASP和ASP.NET有什么区别

asp.net是代码分离的,你可以将事件、代码全部写在*.cs或者*.vbs里面

通过编译后,你只需要将*.aspx文件进行发布,客户看不到你的源代码*.cs

codebehind 只是其中的一种编码方式, 也可以用传统的方式全部写在一个 aspx 文件里面的, 一个是解释执行, 一个是编译的。

一个是弱类型的语言, 一个是强类型的语言。

1)整体架构上更加紧密,表现在程序员的开发有了ide窗口,程序的撰写方式可以做到

页面元素与代码分离。

2)可用工具及条件更方便,其继续发扬其服务端的优势,可以直接调用api及其他组件等,

跟操作系统的结合更紧密。

3)借用xml强大的描述优势,及其xml引擎,做到中间代码的跨平台性。

4)开发语言多样化,编写asp。net的语言可以是jscript/c#/vb有一种语言的可选。

5)中间编译的特性,这不用多说了,是其经常引以为自豪的东西。

6)其封装了非常多的环境用的东西,你不必关心客户端是什么浏览器。

这些是我认为的最主要的特点

作为我也是从asp向。net转变,我感觉有以下几点不便,

1)页面处理与服务端处理的过程容易造成开发人员的混淆

2)页面javascript代码的嵌入与调用没asp直接了当,让人生厌

3)系统自带了页面上的常用组件,如label/text/datagrid 等等,而datagrid似乎受

到很多开发人员的喜欢,我感觉不爽,深层次的控制必须用javascript

4)其类的概念让概念不太明确的程序员们比较难编出结构紧凑优化的代码,

我认为这不是一个程序员水平的事情,而是程序员也应归属于开发梯队当中。

总体感觉:

无论其为服务端的开发人员提供了利用操作系统资源多么美妙的好处,其作为下一代的开发工具,与asp的相似之处特别少,一般开发人员转形会比较困难,会损失很多大伙以往的开发经验。

另外,作为最终的页面,其必将是一个html的文本,这一点目前ms通过把服务端xml导出成为html页面。看了自己的开发的。net程序,然后再看页面上的源文件感觉有种说不出的感觉,受骗也罢,佩服也罢。

在开发。net过程中从asp程序员的角度来看,纯粹是脱裤子放屁,什么类封装,什么datagrid,既不好做,也不好看,更不好自主的调整页面元素的风格。