小编ale*_*lex的帖子

多个事件订阅中的同步问题并获取最新快照

通过增强OrderManager来解决以下同步问题的最佳方法是什么?OrderForm需要获取最新的订单和交易列表并订阅这些事件,而OrderManager通过另一个线程生成订单和交易.

public class OrderManager
{
    public event EventHandler<OrderEventArgs> OrderAdded;
    public event EventHandler<OrderEventArgs> OrderUpdated;
    public event EventHandler<OrderEventArgs> OrderDeleted;
    public event EventHandler<TradeEventArgs> TradeAdded;

    public List<Order> Orders { get; private set; }
    public List<Trade> Trades { get; private set; }
    ...
}

public class OrderForm
{
    public OrderForm(OrderManager manager)
    {
        manager.OrderAdded += manager_OrderAdded;
        manager.OrderUpdated += manager_OrderUpdated;
        manager.OrderDeleted += manager_OrderDeleted;
        manager.TradeAdded += manager_TradeAdded;

        Populate(manager.Orders);
        Populate(manager.Trades);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我应该删除事件模式并实现这样吗?还有其他更好的办法?

public class OrderListener
{
    public Action<Order> OrderAdded { get; set; }
    public Action<Order> OrderUpdated { …
Run Code Online (Sandbox Code Playgroud)

c# events

5
推荐指数
1
解决办法
374
查看次数

部署守护进程的过程和位置

我是 Linux 新手。我最近将我的 C++ 窗口服务移植到 Linux 守护进程。

在 Windows 中,我有以下文件夹结构。我发现这个结构很容易让其他同事遵循并升级到新版本。

C:\services\my_app\version_1_0\my_app.exe  
C:\services\my_app\version_1_0\my_app.config.xml  
C:\services\my_app\version_1_0\dependencies1.dll  
C:\services\my_app\version_1_0\log\my_app_20121110.log  
C:\services\my_app\version_1_0\data\my_app_data_20121110.txt  
C:\services\my_app\start_my_app.bat
Run Code Online (Sandbox Code Playgroud)

我对 Linux 中的部署位置进行了一些研究,发现很混乱:

  1. 有人说二进制文件应该部署在 /usr/bin/my_app 中
  2. 日志文件夹应为 /var/log/my_app
  3. 我应该将数据文件放在哪里?
  4. 启动脚本应放置在 /etc/init.d/my_app 中

提前感谢您的帮助。

linux windows deployment porting

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

类模板与函数模板中的右值引用

#include <iostream>

template <typename T>
class test
{
public:
    test(T&& t)
    {
    }
};

template <typename T>
void succeed(T&& t)
{
}

int main()
{
    int i = 1;
    test<int> t(i);    // failed to compile
    succeed(i);        // OK
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

GCC 5.2 中的错误:main.cpp:在函数“int main()”中:main.cpp:20:18:错误:无法将“int”左值绑定到“int&&”测试 t(i);^ main.cpp:7:5: 注意:初始化 'test::test(T&&) [with T = int]' test(T&& t) 的参数 1 ^~~~

有人可以解释为什么类模板无法编译但函数模板可以吗?谢谢。

c++ templates rvalue-reference

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

标签 统计

c# ×1

c++ ×1

deployment ×1

events ×1

linux ×1

porting ×1

rvalue-reference ×1

templates ×1

windows ×1