小编con*_*ius的帖子

std :: future gcc实验性实现C++ 0x的异常

我正在尝试使用C++ 0x线程,部分在gcc 4.5中实现,我遇到了一个问题,我无法理解.我们来看看这段代码吧

#include <future>
#include <iostream>

int main()
{
        std::cout << std::async([]() { return 10; }).get() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

它很简单,应该可以工作,但事实并非如此.它抛出std :: system_error

在抛出'std :: system_error'的实例后调用终止what():Aborted

what()返回空字符串,因此根本没有错误信息.更重要的是,它没有使用在线编译器,它也使用gcc 4.5,但现在它可以正常工作.你可以在http://liveworkspace.org/code/f3003d62a758e047a880920c84f1241c看到它, 但昨天它抛出相同的异常(但是,服务器上没有进行任何更改).你知道这是什么问题吗?

谢谢.

multithreading g++ c++11

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

模板消歧器

我试图找到关于模板关键字的任何信息用作消除歧义,但没有任何相关信息.可能我正在搜索错误的关键字,但标准中没有.template或 - >模板.谷歌只显示来自不同论坛的GCC问题,但没有真正解释它用于什么.

第11行(在GCC上)没有模板关键字编译的代码无法编译,但我不太确定这是否符合标准.

template<typename B>
struct S1
{
    template<typename T> void test() {}
};

template<typename T>
struct S2
{
    S2()
    {
        S1<T>().template test<int>();
    }
};

int main()
{
   S2<int>();
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:为什么这里使用了模板关键字,没有那个关键字会有什么样的歧义?我在哪里可以阅读(我非常感谢链接到标准).

谢谢.

c++ templates ambiguity

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

内存排序问题

我正在尝试C++ 0x支持,并且存在一个问题,我想不应该存在.要么我不明白这个主题,要么gcc有一个bug.

我有以下代码,最初x并且y是相同的.线程1始终x先递增,然后递增y.两者都是原子整数值,因此根本没有增量问题.线程2正在检查是否x小于y,如果是,则显示错误消息.

这段代码有时会失败,但为什么呢?这里的问题可能是内存重新排序,但默认情况下所有原子操作都是顺序一致的,我没有明确放松那些操作.我正在x86上编译这段代码,据我所知,该代码不应该有任何订购问题.你能解释一下问题是什么吗?

#include <iostream>
#include <atomic>
#include <thread>

std::atomic_int x;
std::atomic_int y;

void f1()
{
    while (true)
    {
        ++x;
        ++y;
    }
}

void f2()
{
    while (true)
    {
        if (x < y)
        {
            std::cout << "error" << std::endl;
        }
    }
}

int main()
{
    x = 0;
    y = 0;

    std::thread t1(f1);
    std::thread t2(f2);

    t1.join();
    t2.join();
}
Run Code Online (Sandbox Code Playgroud)

结果可以在这里查看.

c++ multithreading memory-fences c++11

9
推荐指数
2
解决办法
739
查看次数

C++数据库通信库

我正在寻找一个设计精良,高效且强大的C++跨数据库和跨平台数据库通信库.我需要支持

  • 神谕
  • MySQL的
  • PostgreSQL的
  • 火鸟(可选)
  • MSSQL(可选)

当我说跨平台时,我的意思是跨平台,我需要类似于提升的东西.

目前我正在研究社会,但是

  • 我不确定这个库是多么便携和好
  • 我想有一个替代方案.

目前我正在使用Qt,但我不喜欢仅将Qt用于数据库通信,而没有使用其他Qt功能.这是一个临时解决方案,我正在寻找替代品.

你用的是哪些图书馆?你能推荐什么?如果您知道任何非常好且可移植的Oracle通信库也可以接受,但首选跨数据库.

谢谢.

c++ database-connection

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