问题列表 - 第67页

在多台计算机上扩展多线程应用程序

我正在做一个项目我们需要更多的性能.随着时间的推移,我们不断改进设计,使其更加并行(包括线程和分布式).然后最新的一步是将其中的一部分移动到具有16个核心的新机器上.我发现我们需要重新思考如何在共享内存模型中扩展到那么多内核.例如,标准内存分配器不够好.

人们会推荐哪些资源?

到目前为止,我发现Sutter的专栏Dobbs博士是一个良好的开端.我刚刚获得了多处理器编程的艺术和关于英特尔线程构建模块的O'Reilly书籍

malloc performance multithreading scalability

6
推荐指数
1
解决办法
863
查看次数

防守编程

在编写代码时,您是否有意识地进行防御性编程以确保高程序质量并避免代码被恶意利用的可能性,例如通过缓冲区溢出漏洞或代码注入?

您将始终对代码应用的"最低"质量水平是多少?

security defensive-programming

11
推荐指数
1
解决办法
1618
查看次数

为魔兽世界开发插件 - 入门?

作为一个长期以来的魔兽世界玩家,以及一个充满激情的开发者,我已经决定将这两者结合起来并着手开发一些插件.不仅可以改善我的游戏体验,还可以作为学习新东西的绝佳机会.

有没有人对如何开始有任何建议?

是否有可以使用的IDE?如何进行测试?有没有现成的图书馆?或者通过忽略图书馆并从头开始构建,我会获得更好的学习体验吗?我怎么选择Hogger?

很想听听你的建议,经验和观点.

plugins lua add-on world-of-warcraft

18
推荐指数
4
解决办法
2109
查看次数

如何在继续之前等待线程完成?

我有一些代码用于在.NET CF 2.0上启动一个线程:

ThreadStart tStart = new ThreadStart(MyMethod);
Thread t = new Thread(tStart);
t.Start();
Run Code Online (Sandbox Code Playgroud)

如果我在循环中调用它,则项目完全无序.如何引入等待t.Start(),以便在代码继续之前线程上的工作完成?BeginInvoke/EndInvoke比手动创建线程更适合这个吗?

c# multithreading compact-framework

11
推荐指数
2
解决办法
1万
查看次数

抛出异常的性能注意事项

我多次遇到过以下类型的代码,我想知道这是不是一个好的做法(从性能角度来看):

try
{
    ... // some code
}
catch (Exception ex)
{
    ... // Do something
    throw new CustomException(ex);
}
Run Code Online (Sandbox Code Playgroud)

基本上,编码器正在做的是它们在自定义异常中包含异常并再次抛出异常.

这与以下两个方面的性能有何不同:

try
{
    ... // some code
}
catch (Exception ex)
{
    .. // Do something
    throw ex;
}
Run Code Online (Sandbox Code Playgroud)

要么

try
{
    ... // some code
}
catch (Exception ex)
{
    .. // Do something
    throw;
}
Run Code Online (Sandbox Code Playgroud)

撇开任何功能或编码最佳实践论点,这3种方法之间是否有任何性能差异?

.net optimization performance exception

9
推荐指数
1
解决办法
1508
查看次数

如何创建SQL Server函数以将子查询中的多行"连接"到单个分隔字段?

为了说明,假设我有两个表如下:

VehicleID Name
1         Chuck
2         Larry

LocationID VehicleID City
1          1         New York
2          1         Seattle
3          1         Vancouver
4          2         Los Angeles
5          2         Houston
Run Code Online (Sandbox Code Playgroud)

我想写一个查询来返回以下结果:

VehicleID Name    Locations
1         Chuck   New York, Seattle, Vancouver
2         Larry   Los Angeles, Houston
Run Code Online (Sandbox Code Playgroud)

我知道这可以使用服务器端游标完成,即:

DECLARE @VehicleID int
DECLARE @VehicleName varchar(100)
DECLARE @LocationCity varchar(100)
DECLARE @Locations varchar(4000)
DECLARE @Results TABLE
(
  VehicleID int
  Name varchar(100)
  Locations varchar(4000)
)

DECLARE VehiclesCursor CURSOR FOR
SELECT
  [VehicleID]
, [Name]
FROM [Vehicles]

OPEN VehiclesCursor

FETCH NEXT …
Run Code Online (Sandbox Code Playgroud)

sql sql-server string-concatenation

193
推荐指数
8
解决办法
13万
查看次数

如何在VB6中最好地共享可嵌入的表单?

有没有一种很好的方法可以在VB6中创建一个可以轻松嵌入其他表单的表单?

最近有几次,我想设计和编写一个Form对象,我可以插入其他几个"父"表单.我的目标是创建一个集中的代码片段,用于以特定方式管理多个UI组件,然后能够在多个位置使用它(UI布局和逻辑).我当然愿意使用代码(而不是设计视图)来加载子表单.

到目前为止,我提出的最好的方法是将子窗体的所有有趣逻辑拉入类模块,并让每个父窗体布局UI(可能在Picture控件中)并将该Picture对象传递给类模块.然后,该班级知道如何对图片进行操作,并假设所有预期的部分都已正确布局.这种方法有几个缺点,我想要更优雅的东西.

forms vb6 code-reuse

6
推荐指数
1
解决办法
408
查看次数

C++中单例的线程安全延迟构造

有没有办法在C++中实现单例对象:

  1. 懒惰地以线程安全的方式构造(两个线程可能同时是单例的第一个用户 - 它应该仍然只构造一次).
  2. 不依赖于事先构造的静态变量(因此单例对象在构造静态变量期间本身是安全的).

(我不太了解我的C++,但是在执行任何代码之前初始化积分和常量静态变量的情况(即,甚至在执行静态构造函数之前 - 它们的值可能已在程序中"初始化")如果是这样的话 - 也许这可以被利用来实现单例互斥体 - 这反过来可以用来保护真正的单例的创建......)


很好,现在我似乎有几个好的答案(羞耻我不能标记2或3作为答案).似乎有两个广泛的解决方案:

  1. 使用POD静态变量的静态初始化(而不是动态初始化),并使用内置原子指令实现我自己的互斥锁.这是我在问题中暗示的那种解决方案,我相信我已经知道了.
  2. 使用其他库函数,如pthread_onceboost :: call_once.这些我当然不知道 - 并且非常感谢所发布的答案.

c++ singleton construction multithreading lazy-initialization

36
推荐指数
5
解决办法
2万
查看次数

开始着色器开发

我想开始使用微软的XNA进行一些游戏开发.部分原因是Shader开发,但我不知道如何开始.我知道nVidia的FX Composer是开发着色器的一个很好的工具,但我没有找到有关如何实际入门的有用和更新的内容.

你会推荐什么教程?

shader

19
推荐指数
2
解决办法
5446
查看次数

Visual Studio和双/多显示器:如何从显示器中优化使用?

Ultramon是一个很棒的双显示器程序(在显示器上拉伸屏幕),但我想知道在Visual Studio中是否有任何方法可以在一台显示器上打开一个代码选项卡,在第二个显示器上打开第二个代码选项卡监视器只运行一个Visual Studio实例?

或者是否有任何其他建议可以在双显示器和Visual Studio上获得最大的收益?

multiple-monitors monitor visual-studio

36
推荐指数
3
解决办法
6万
查看次数