小编jav*_*red的帖子

主动解决方案平台VS Project Platform VS Platform目标

我希望我的应用程序是为x64构建的(因为我使用的是x64 dll).在配置管理器中,我将"Active solution platform"设置为"x64"但是在项目列表Platform中设置为"x86".项目属性中的"平台目标"也设置为"x86"

我完全糊涂了设置目标平台的三个地方:

  • 配置管理器:活动解决方案平台
  • 配置管理器:项目平台
  • 项目属性:平台目标

例如,我可以将Active解决方案平台设置为x64,将Project平台设置为x86,将Project target设置为x64.那意味着什么?

有人可以描述这些选项究竟是什么意思以及它们应该如何一起使用?如何编译到x64?

.net c# visual-studio

21
推荐指数
1
解决办法
9769
查看次数

Interlocked.Exchange和Volatile.Write之间的区别?

Interlocked.Exchange和Volatile.Write有什么区别?

两种方法都更新某些变量的值.有人可以总结何时使用它们?

http://msdn.microsoft.com/ru-ru/library/bb337971http://msdn.microsoft.com/en-us/library/gg712713.aspx

特别是我需要更新我的数组的双项,我希望另一个线程看到最新的值.什么是首选?Interlocked.Exchange(ref arr[3], myValue)Volatile.Write(ref arr[3], info);在那里arr被声明为double

================================================== ==========================真实的例子,我声明了这样的双数组:

private double[] _cachedProduct;
Run Code Online (Sandbox Code Playgroud)

在一个线程中,我更新它:

        _cachedProduct[instrumentId] = calcValue;
        ...
        are.Set();
Run Code Online (Sandbox Code Playgroud)

在另一个线程中,我像这样读取这个数组:

        while(true) {
            are.WaitOne();
            ...
                result += _cachedProduct[instrumentId];
            ...
        }
Run Code Online (Sandbox Code Playgroud)

对我来说它只是工作正常.然而,为了确保"它将永远有效",无论它看起来我应该添加Volatile.WriteInterlocked.Exchange.因为双重更新不能保证是原子的http://msdn.microsoft.com/en-us/library/aa691278%28VS.71%29.aspx

在这个问题的答案中,我希望看到Volatile和Interlocked类的详细比较.为什么我们需要2节课?哪一个和何时使用?

c# .net-4.5

21
推荐指数
2
解决办法
3387
查看次数

可以将小数乘以int吗?

我是C#和.NET的新手,所以如果这是一个太简单的问题,我就会大肆宣传.

我有一个十进制变量decVar.我需要将它与整数变量相乘intVar.我需要结果decimal.那么我应该将整数变量声明为int或作为decimal

有这个代码,

decimal decVar = 0.1m;
decimal decRes = decVar * intVar;
Run Code Online (Sandbox Code Playgroud)

我应该这样声明:

int intVar = 3;
Run Code Online (Sandbox Code Playgroud)

或者像这样:

decimal intVar = 3;
Run Code Online (Sandbox Code Playgroud)

这是一个财务计算,所以我需要结果完全正确0.3.

upd:代码更新(感谢Jon)

.net c# int decimal type-conversion

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

升级到1.7后,svn客户端无法正常工作:工作副本太旧了

我在本地机器+ MS Visual Studio上使用VisualSVN客户端和服务器已有一段时间了.

今天我决定将tortoisesvn升级到最新版本(因为它每次都没有版本弹出时弹出).

之后,我无法从VS提交/浏览历史记录等.tortoisesvn报告此类错误:

Working copy "C:\pathtorepository" is too old (format 10, created by Subversion 1.6).

如何解决我的问题?我应该从1.7到1.6回滚tortoisesvn吗?

svn tortoisesvn visualsvn

20
推荐指数
1
解决办法
3万
查看次数

如何在wpf ViewModel中实现observable int?

在我的mvvm ViewModel中,我有这样的字段

public int Delta { get; private set; }
Run Code Online (Sandbox Code Playgroud)

但是当我更新它时:

Delta = newValue;
Run Code Online (Sandbox Code Playgroud)

用户界面未刷新.

我以为数据绑定会为我做这件事.例如,我可以将集合声明为ObservableCollection,然后数据绑定将起作用.

但是没有ObservableInt,怎么说查看它需要刷新呢?

可能我应该提出一些事件"通知财产改变"或什么?

c# wpf mvvm

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

如何决定使用什么 - 双倍或小数?

可能重复:
十进制vs双! - 我应该使用哪一个?何时使用?

double在我的交易软件中使用价格类型.我注意到有时会出现奇怪的错误.如果价格在"点"之后包含4位数,则会出现,如2.1234.

当我从我的程序"2.1234"发送市场订单出现在"2.1235"的价格.

我不使用,decimal因为我不需要"极端"精度.我不需要将"2.00000000003"与"2.00000000002"区分开来.我需要一个点后最多6位数.

问题是 - 线路在哪里?什么时候用decimal

我应该decimal用于任何金融业务吗?即使我只需要点后一位数字?(1.1 1.2等)

我知道decimal很慢,所以double除非decimal绝对需要,否则我更愿意使用.

.net c#

17
推荐指数
3
解决办法
1万
查看次数

ConcurrentQueue与Queue + lock的性能

我必须实现一个消费者的一个生产者标准算法.我可以轻松地使用Queue几个lock语句来实现它.或者我可以使用ConcurrentQueue.什么是更好的?

如果Queue + lock使用然后我可以优化"多次加/退",因为我可以lock一次又Add多次.

一般情况下更快 - ConcurrentQueue或者Queue + lock差异有多大?当然ConcurrentQueue是最直接的方式,但我不想放弃很多性能,因为我在HFT交易应用程序中使用它.

c#

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

std :: atomic <std :: chrono :: high_resolution_clock :: time_point>无法编译

我需要std::chrono::high_resolution_clock::time_point从一个线程写入并从另一个线程读取的字段.如果我声明它是我的代码编译没有任何错误.

但是为了使我的字段在另一个线程中可见,我用std::atomic这样的方式包围它,std::atomic<std::chrono::high_resolution_clock::time_point>现在我有以下编译错误:

/usr/include/c++/4.8/atomic:167:7: error: function ‘std::atomic<_Tp>::atomic() [with _Tp = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> > >]’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘constexpr std::atomic<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> > > >::atomic()’
       atomic() noexcept = default;
Run Code Online (Sandbox Code Playgroud)

我应该如何声明std::chrono::high_resolution_clock::time_point从一个线程写入并从另一个线程读取的字段(以确保"读取线程"看到最后一个值)?

c++ multithreading c++11

16
推荐指数
2
解决办法
3533
查看次数

何时使用Task以及何时使用Thread?

我刚刚问过关于任务的问题,但意识到我其实想问更多一般问题.有人可以总结一下任务和线程的优缺点.如何理解我应该使用Task还是Thread?

c#

15
推荐指数
1
解决办法
8778
查看次数

如何声明和使用"一个作家,多个读者,一个过程,简单类型"变量?

我有一个非常简单的问题.我有简单的类型变量(如int).我有一个进程,一个编写器线程,几个"只读"线程.我该如何声明变量?

  • volatile int
  • std::atomic<int>
  • int

我希望当"writer"线程修改值时,所有"读者"线程应该尽快看到新的值.

可以同时读取和写入变量,但我希望读者获得旧值或新值,而不是某些"中间"值.

我正在使用单CPU Xeon E5 v3机器.我不需要是可移植的,我只在这台服务器上运行代码,我编译-march=native -mtune=native.性能非常重要,所以除非绝对需要,否则我不想添加"同步开销".


如果我只是使用int并且一个线程写入值,那么在另一个线程中我可能暂时没有看到"新鲜"值吗?

c++ multithreading low-latency

15
推荐指数
3
解决办法
932
查看次数