考虑到当今多核和多处理硬件的巨大重要性,试图掌握当前人们实际编写并行代码的方式.对我来说,看起来主流范式是pthreads(POSIX线程),它在Linux上是原生的,可在Windows上使用.HPC人员倾向于使用OpenMP或MPI,但似乎StackOverflow上没有这些.或者你依靠Java线程,Windows线程API等而不是便携式标准?在您看来,建议的并行编程方式是什么?
或者你正在使用更多异国情调的东西,如Erlang,CUDA,RapidMind,CodePlay,Oz,甚至是亲爱的老奥卡姆?
澄清:我正在寻找非常便携的解决方案,适用于各种主机架构上的Linux,各种unix等平台.Windows是一种罕见的案例,非常适合支持.所以C#和.net在这里真的太狭隘,CLR是一个很酷的技术,但是他们可以为Linux主机发布它,这样它就像JVM,Python,Erlang或任何其他可移植语言一样普遍.
基于C++或JVM:可能是C++,因为JVM往往会隐藏性能.
MPI:我同意甚至HPC人员都认为它是一种难以使用的工具 - 但是对于在128000处理器上运行,它是解决map/reduce不适用的问题的唯一可扩展解决方案.但是,消息传递非常优雅,因为它是唯一可以很好地扩展到本地内存/ AMP,共享内存/ SMP,分布式运行时环境的编程风格.
一个有趣的新竞争者是MCAPI.但我认为没有人有时间对此有任何实际经验.
总的来说,情况似乎是有许多我不了解的有趣的微软项目,而且Windows API或pthreads是实践中最常见的实现.
我想列出一系列卓越的机器人仿真环境,包括它们的优缺点.我所知道的一些例子是Webots和Player/Stage.
我是.Net开发人员,想调查在Mono上构建和运行我们的框架.
如果最初的项目成功,我将很乐意投资OS学习曲线,但现在我想专注于启动和运行并看到代码正常工作.
假设我对Linux知之甚少,但我是一位经验丰富的开发人员,那么最好的分发是什么?我能期望多快(几小时/几天/几周?)?
到目前为止的一些反馈(感谢答案,伙计们):决定使用CentOS,但这也是因为这符合我想要移植到Mono的.Net代码的特定实现.唯一的问题是我需要转到版本4进行Mono的开箱即用安装
通过一些帮助,我已经能够实现这一点,我可以运行编译并开始解决移植问题.这花了几个小时 - 最大的学习曲线是围绕驾驶Linux.
20081231:在ubuntu上找到以下运行mono的文章:http://www.ddj.com/windows/212201484
我正在设计一个由Web应用程序使用的小型SQL数据库.
假设一个特定的表有一个Name字段,其中不允许两行具有相同的值.但是,用户可以随时更改"名称"字段.
此表中的主键将用作其他表中的外键.因此,如果将Name字段用作主键,则需要将任何更改传播到其他表.另一方面,唯一性要求将自动处理.
我的直觉是添加一个整数字段作为主键,可以由数据库自动填充.有这个领域有什么意义,还是浪费时间?
有谁知道C#编译器编号文字修饰符的完整列表?
默认情况下,声明'0'使其成为Int32,'0.0'使其成为'Double'.我可以在末尾使用文字修饰符"f"来确保将某些内容视为"单个".比如这样......
var x = 0; // x is Int32
var y = 0f; // y is Single
Run Code Online (Sandbox Code Playgroud)
我可以使用的其他修饰符是什么?是否有一个强制Double,Decimal,UInt32?我试着谷歌搜索但找不到任何东西.也许我的术语是错误的,这就解释了为什么我的空白.任何帮助非常感谢.
我们使用Subversion作为我们的源代码控制系统,并将VisualStudio项目文件(vcproj)存储在源代码控制系统中,这是我认为的正常情况.使用Subversion我们不使用任何形式的文件锁定,因此如果两个开发人员同时处理同一个项目并且都将文件添加到项目或更改设置,则第二个要提交的人必须合并更改.
你如何合并这些变化?
vcproj文件只是文本文件,因此可以手动编辑它们,但它们不适合手工编辑,特别是初级开发人员.
我能想到的方法是
目前我们正在使用手动重新添加所有更改的第一个选项,但这非常耗时,我想知道是否有更好的方法.
对于源文件,自动合并功能在大多数情况下都可以工作,我们不会遇到很多冲突.
有没有人遇到过在Visual Studio .NET中尝试在Windows窗体上"查看设计器"导致错误的问题:"无法加载文件或程序集......"?
在这种情况下,有问题的组件是XYZ.dll.我设法通过添加XYZ.dll及其对项目引用的所有引用来解决这个问题(即使我的项目不直接依赖于它们)并重建整个解决方案.然而,在那之后,我从我的项目中删除了所有这些引用,重建,它仍然有效.
另一条信息是我使用Resharper 2.5.其他人指出,可能是Resharper做了一些影子复制.我下次会发生这种情况.有没有人首先理解为什么会发生这种错误,并且可能是"正确"的解决方法?
我正在研究.NET中的集成测试项目.测试框架可执行文件启动服务,然后需要等待服务完成操作.
exe等待服务完成任务的最佳方法是什么(服务本身不会在任务完成时退出)?
这两个进程都可以访问同一个数据库,所以我首先想到的是一个记录服务状态的简单表.一旦它发出信号表明它已经完成,exe就可以停止等待并完成其任务.其他方法?
让我重申,一旦服务完成其任务,该服务将保持运行/内存状态,因此等待它退出将无效.;-)
此外,这纯粹用于集成测试目的,并且永远不会投入生产,所以"简单"就是操作词.
C#中的PHP preg_replace是什么?
我有一个字符串数组,我想用另一个字符串数组替换.这是PHP中的一个例子.如何在不使用.Replace("old","new")的情况下在C#中执行类似的操作.
$patterns[0] = '/=C0/';
$patterns[1] = '/=E9/';
$patterns[2] = '/=C9/';
$replacements[0] = 'à';
$replacements[1] = 'é';
$replacements[2] = 'é';
return preg_replace($patterns, $replacements, $text);
Run Code Online (Sandbox Code Playgroud) 请有人建议放置一些应该可供所有用户访问和编辑的应用程序数据的最佳位置(路径).
这是考虑Windows XP和Windows Vista,我希望上述路径的任何文件中的更改不会触发UAC!
.net ×3
c# ×2
.net-2.0 ×1
environment ×1
filesystems ×1
linux ×1
merge ×1
mono ×1
openmp ×1
preg-replace ×1
primary-key ×1
process ×1
pthreads ×1
robotics ×1
simulation ×1
svn ×1
windows ×1
windows-xp ×1