小编Dej*_*jwi的帖子

pthread_mutex_lock.c:62:__ pthread_mutex_lock:断言`互斥锁 - > __ data .__ owner == 0'失败

我收到了这个错误:

pthread_mutex_lock.c:62:__ pthread_mutex_lock:断言`互斥锁 - > _ 数据._owner == 0'失败了.

我找不到任何原因.但是我不确定以下代码:

声明:

std::mutex lock;
std::condition_variable cond;
Run Code Online (Sandbox Code Playgroud)

锁定和解锁序列:

std::unique_lock<std::mutex> lk(lock);

cond.wait(lk);

lock.unlock();
Run Code Online (Sandbox Code Playgroud)

如果我删除这个序列 - 一切正常,但没有任何保护.我不确定我unique_lock是否正确使用.

c++ multithreading pthreads c++11

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

gcc中的C++ 11 thread_local - 替代品

正如我所见:http://gcc.gnu.org/projects/cxx0x.html不幸的是,在gcc中不支持thread_local关键字.

那有什么替代品吗?我不想使用boost库.

c++ multithreading gcc g++ c++11

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

bash在循环中填充数组

如何在循环中填充数组?我想做那样的事情:

declare -A results

results["a"]=1
results["b"]=2

while read data; do
results[$data]=1
done

for i in "${!results[@]}"
do
  echo "key  : $i"
  echo "value: ${results[$i]}"
done
Run Code Online (Sandbox Code Playgroud)

但似乎我无法在for循环中向数组添加任何内容.为什么?

bash for-loop associative-array

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

提升精神将整个比赛作为一个字符串

我正在尝试使用boost精神框架来定义自己的语法,并且我正在定义这样的匹配规则:

value = (
        char_('"') >>
        (*qi::lexeme[
                char_('\\') >> char_('\\') |
                char_('\\') >> char_('"')  |
                graph - char_('"') |
                char_(' ')
        ])[some_func] >>
        char_('"')
);
Run Code Online (Sandbox Code Playgroud)

我想将一个动作 - some_func - 分配到它的一部分,并将整个匹配的字符串作为参数传递.但不幸的是,我会得到类似的东西vector<boost::variant<boost::fusion::vector2 ..a lot of stuff...)...>.我可以以某种方式将整个数据作为char*,std :: string甚至void*与大小?

c++ boost boost-spirit boost-spirit-qi

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

CMake(cotire)预编译头文件并禁用警告

我正在为CMake 使用cotire(https://github.com/sakra/cotire)插件,它处理与编译加速有关的几个好东西(例如预编译头文件).

问题是我包含了几个标题(Boost related或Protobuf)作为系统标题 - 其中警告被禁用.在他们被预编译后,我收到了很多警告.

我可以在预编译的头文件中禁用警告吗?

gcc warnings cmake precompiled-headers suppress-warnings

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

C++任务链

我必须处理以下场景:我有5个任务("A","B","C","D","E"),我想将它们并行化,但是就它们的依赖性而言.他们必须按照这样的顺序执行:

A --> B --\
C ----------> E
D --------/
Run Code Online (Sandbox Code Playgroud)

因此,当所有先前的完成并且必须在A之后执行"B"时执行"E".这是我的问题.有没有准备好的解决方案(STL,Boost)?或者我将基于std :: thread实现它?

c++ multithreading boost c++11

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

将python请求会话存储在持久存储中

我正在使用python请求库.我的应用程序从站点执行简单的get请求并打印结果.

该网站需要使用ntlm进行授权.幸运的是,我可以依赖HttpNtlmAuth,它工作正常.

session = requests.Session()
session.auth = HttpNtlmAuth(domain + "\\" + username,
                            password,
                            session)
Run Code Online (Sandbox Code Playgroud)

但是如果应用程序执行了几次 - 每次我都需要输入用户名和密码.这非常不舒服.存储凭证是不可取的.

我可以存储会话对象本身并重复使用几次吗?从服务器的角度来看 - 它应该没问题.

有没有办法腌制和破坏会话?

python pickle python-requests

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

C++ Linux获取CPU标称频率

我需要在 C++ 代码中获得 Linux 下的 CPU 标称频率。据我所知,/proc/cpuinfo包含当前频率。

/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

作为以kHz为单位的标称频率总是可靠的?

或者有没有更好的方法从 C++ 获取这些信息?

c++ linux cpu-speed

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

友谊和私有嵌套类继承

我想继承一个嵌套类,它位于外部类的私有部分.可能吗?

class A {
  friend class B;
  friend class C;
  private:
    class NiceNestedClass {
    };
};

class C {
  void a() {
    A::NiceNestedClass works;
  }
};

class B : A::NiceNestedClass{
};
Run Code Online (Sandbox Code Playgroud)

NiceNestedClass的实例化不是问题.但是g ++不允许我继承它.有没有解决方法?

g++ -std=c++11 a.c  -o a
a.c:5:11: error: ‘class A::NiceNestedClass’ is private
     class NiceNestedClass {
           ^
a.c:15:14: error: within this context
 class B : A::NiceNestedClass{
Run Code Online (Sandbox Code Playgroud)

g ++ 4.8.4,std = c ++ 11

c++ inheritance friend inner-classes

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

JavaFX ListView禁用水平滚动

我试图避免在ListView中水平滚动。ListView实例保存HBox项的列表,每个项具有不同的宽度。

到目前为止,我正在使用这样的单元工厂:

public class ListViewCell extends ListCell<Data>
{
    @Override
    public void updateItem(Data data, boolean empty)
    {
        super.updateItem(data, empty);
        if(empty || data == null){
            setGraphic(null);
            setText(null);
        }
        if(data != null)
        {
            Region region = createRow(data);
            region.prefWidthProperty().bind(mListView.widthProperty().subtract(20));
            region.maxWidthProperty().bind(mListView.widthProperty().subtract(20));
            setGraphic(region);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这还不够。通常在添加几个项目之后,ListView的水平滚动条就会出现。即使似乎没有必要。

如何确保ListViewCell不会超过其父级宽度,并且水平滚动条不会出现?

java listview javafx

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