小编ink*_*boo的帖子

c ++ 11中未使用的参数

在c ++ 03及更早版本中禁用有关未使用参数的编译器警告我通常使用这样的代码:

#define UNUSED(expr) do { (void)(expr); } while (0)
Run Code Online (Sandbox Code Playgroud)

例如

int main(int argc, char *argv[])
{
    UNUSED(argc);
    UNUSED(argv);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但宏不是c ++的最佳实践,所以.c ++ 11标准是否有更好的解决方案?我的意思是我可以摆脱宏吗?

谢谢大家!

c++ c++11 unused-variables

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

使用boost :: thread的Actor计算模型

我正在尝试使用boost :: thread在C++上的线程上实现Actor计算模型.但程序在执行期间抛出奇怪的异常.异常不稳定,有时程序以正确的方式工作.

我的代码:

actor.hpp

class Actor {

  public:
    typedef boost::function<int()> Job;

  private:
    std::queue<Job>             d_jobQueue;
    boost::mutex                d_jobQueueMutex;
    boost::condition_variable   d_hasJob;
    boost::atomic<bool>         d_keepWorkerRunning;
    boost::thread               d_worker;

    void workerThread();

  public:
    Actor();
    virtual ~Actor();

    void execJobAsync(const Job& job);

    int execJobSync(const Job& job);
};
Run Code Online (Sandbox Code Playgroud)

actor.cpp

namespace {

int executeJobSync(std::string          *error,
                   boost::promise<int> *promise,
                   const Actor::Job     *job)
{
    int rc = (*job)();

    promise->set_value(rc);
    return 0;
}

}

void Actor::workerThread()
{
    while (d_keepWorkerRunning) try {
        Job job;
        {
            boost::unique_lock<boost::mutex> g(d_jobQueueMutex);

            while (d_jobQueue.empty()) {
                d_hasJob.wait(g);
            }

            job = d_jobQueue.front();
            d_jobQueue.pop(); …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading boost actor

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

标签 统计

c++ ×2

actor ×1

boost ×1

c++11 ×1

multithreading ×1

unused-variables ×1