小编nha*_*tdh的帖子

我是否被迫使用pthread_cond_broadcast(超过pthread_cond_signal)以保证*my*thread被唤醒?

在一些QT GUI线程(一个pthread线程)与一些C代码连接的上下文中,我偶然发现了以下问题:我启动了QT Gui线程,在我的C线程恢复其路径之前,我需要确保所有的QT Gui线程中的图形对象已经被构造出来并且它们是有效的QObject(因为C代码将调用QObject:connect()它们).

引言旁边,等待是通过一个pthread_cond_wait()+一个条件变量+一个C线程中的一个相关互斥:

int isReady=0;
pthread_mutex_lock(&conditionReady_mutex);
while(isReady==0) {
    pthread_cond_wait(&conditionReady_cv, &conditionReady_mutex);
}
pthread_mutex_unlock(&conditionReady_mutex);
Run Code Online (Sandbox Code Playgroud)

另一方面,QT Gui线程构造其图形对象,然后用以下信号发出信号:

pthread_mutex_lock(&conditionReady_mutex);
isReady=1;
pthread_cond_broadcast(&conditionReady_cv);
pthread_mutex_unlock(&conditionReady_mutex);
Run Code Online (Sandbox Code Playgroud)

基本的东西,如你所见.但问题是:在Qt Gui线程中,我一直在使用pthread_cond_broadcast(),以确保我的C线程被唤醒,当然.是的,在我当前的应用程序中,我只有一个C线程和一个Qt Gui线程,并且pthread_cond_signal()应该完成唤醒C线程的工作(因为它保证唤醒至少一个线程,并且C线程是唯一的一).

但是,在更一般的上下文中,假设我有三个C线程,但我希望它们中的一个(或两个)被唤醒.一个(两个)特定线程.我该如何确保?

如果我使用pthread_cond_signal(),那可能只是唤醒第三个线程,这将完全忽略这一点,因为我感兴趣的一个线程没有被唤醒.OTOH,唤醒所有线程,甚至那些不需要的线程,这些都是pthread_cond_broadcast()过度的.

有一种方法可以告诉pthread_cond_signal()哪个线程被唤醒?

或者,我是否应该引入更多的条件变量,以便在唤醒的线程组中获得更精细的粒度pthread_cond_broadcast()

谢谢.

c qt pthreads

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

vs 2010中的不可用项目?

哪里的指示不可用或可用(加载)项目/网站被保存?

我有一个解决方案,有一些卸载项目,而加载网站

当然,我可以右击并重新加载它,但仍然,我想现在在那里这个[不可用或可用]信息被保存?

在此输入图像描述

我一直在寻找,sln加载的和卸载的没有区别(无法比较).

同样在Websites.xml,没有这样的差异

visual-studio-2010

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

Java RegEx Matcher.groupCount返回0

我知道这已被问到但我无法修复它

对于身体(西班牙语)的书籍对象:( "quiero mas dinero"实际上相当长一点)

Matcher一直回来0:

    String s="mas"; // this is for testing, comes from a List<String>
    int hit=0;
    Pattern p=Pattern.compile(s,Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(mybooks.get(i).getBody());
    m.find();
    System.out.println(s+"  "+m.groupCount()+"  " +mybooks.get(i).getBody());
    hit+=m.groupCount();
Run Code Online (Sandbox Code Playgroud)

我一直"mas 0 quiero mas dinero"在控制台上.为什么哦为什么?

java regex matcher

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

舍入到Haskell中的特定位数

我正在尝试创建一个函数来将浮点数舍入到定义的数字长度.到目前为止我得出的是:

import Numeric;

digs :: Integral x => x -> [x] <br>
digs 0 = [] <br>
digs x = digs (x `div` 10) ++ [x `mod` 10]

roundTo x t = let d = length $ digs $ round x <br>
                  roundToMachine x t = (fromInteger $ round $ x * 10^^t) * 10^^(-t)
              in roundToMachine x (t - d)
Run Code Online (Sandbox Code Playgroud)

我正在使用该digs函数来确定逗号之前的数字位数以优化输入值(即将所有内容移到逗号之外,因此1.234变为0.1234 * 10^1)

roundTo函数似乎适用于大多数输入,但是对于某些输入,我得到奇怪的结果,例如roundTo 1.0014 4生成1.0010000000000001而不是1.001 …

math haskell

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

什么是虚拟目录?有什么用?

请有人通过示例向我解释什么是虚拟目录,为什么我们需要它?

virtual-directory

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

UIPinchGestureRecognizer和UIPanGestureRecognizer可以合并吗?

我正在努力想弄清楚是否有可能创建一个结合了UIPinchGestureRecognizer和UIPanGestureRecognizer的组合手势识别器.

我正在使用平移视图转换和捏视图缩放.我正在进行增量矩阵连接,以导出应用于视图的结果最终变换矩阵.该矩阵具有缩放和平移.使用单独的手势识别器会导致抖动运动/缩放.不是我想要的.因此,我想在一个手势内处理一次缩放和翻译.有人可以说明如何做到这一点吗?

concatenation matrix-multiplication uigesturerecognizer ios

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

从PHPMYADMIN导出和导入数据

我使用phpMyAdmin导出数据,但是当我导入数据时出现此错误:

#1452 - 无法添加或更新子行:外键约束失败

我可以相应地设置数据然后我没有得到错误.但是有更好的方法吗?比如在phpMyAdmin中禁用某些选项或向SQL添加一些查询?

php mysql sql phpmyadmin

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

弹性搜索查询和PHP中的cURL

我刚开始使用elasticsearch.我想在php中使用cURL进行查询.

这段代码什么都没有...(如果我从命令行执行,请参阅下面的错误.我不确定这个错误是否是由于控制台中的换行...)

$url = "curl -s -XGET http://<my_url>:9200/idx_occurrence/Occurrence/_search -d '
{
'filtered' : {
    'query' : {
        'term' : { 'kingdom_interpreted' : 'Plantae' }
    }
}

}' ";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, 0);

$return=curl_exec($ch);

var_dump($return);
Run Code Online (Sandbox Code Playgroud)

但如果我使用这个网址 http://<my_url>:9200/idx_occurrence/Occurrence/_search?q=kingdom_interpreted:Plantae

然后我从cURL得到结果.

也许可能查询过滤器不正确?(我尝试了几个选项没有成功)

错误:{"error":"SearchPhaseExecutionException [无法执行阶段[查询],完全失败; shardFailures {[AS6HqxgNRtyU9-pQKhJsXQ] [idx_occurrence] [3]:SearchParseException [[idx_occurrence] [3]:from [-1], size [-1]:解析失败[无法解析源[\n {\n已过滤:{\n查询:{\n term:{kingdom:Plantae} \n} \n} \n} \n}]]];嵌套:SearchParseException [[idx_occurrence] [3]:from [-1],size [-1]:Parse Failure [没有解析器元素[filtered]]];} {[AS6HqxgNRtyU9-pQKhJsXQ] [idx_occurrence] [2]:SearchParseException [[idx_occurrence] [2]:from [-1],size [-1]:Parse Failure [无法解析源[\n {\n filtered:{\n query:{\n term:{kingdom:Plantae}} \n} …

php curl elasticsearch

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

SQL Server 2008 R2 Varbinary Max Size

在SQL Server 2008 R2中,我可以使用varbinary(max)插入文件的最大大小是多少?我试图将列中的最大值更改为超过8,000字节,但它不会让我,所以我猜测最大值是8,000字节,但是从MSDN上的这篇文章中,它说最大存储大小为2 ^ 31-1字节:

varbinary [(n | max)]

可变长度的二进制数据.n可以是1到8,000之间的值.max表示最大存储大小为2 ^ 31-1个字节.存储大小是输入数据的实际长度+ 2个字节.输入的数据长度可以是0个字节.varbinary的ANSI SQL同义词是二进制变量.

那么如何在varbinary字段中存储更大的文件呢?我不打算使用FILESTREAM,因为我要保存的文件最大为200kb到1mb,我正在使用的代码:

UPDATE [table]
SET file = ( SELECT * FROM OPENROWSET ( BULK 'C:\A directory\A file.ext', SINGLE BLOB)    alias) 
WHERE idRow = 1
Run Code Online (Sandbox Code Playgroud)

我已经能够成功地将该代码执行到小于或等于8000字节的文件.如果我尝试使用8001字节大小的文件,它将失败.我在表上的文件字段有一个名为"文件"类型的字段varbinary(8000),正如我所说,我无法更改为更大的值.

sql-server varbinary sql-server-2008 sql-server-2008-r2 varbinarymax

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

枚举,单身和反序列化

枚举被认为是单身人士的最佳方式,其中一个原因是它隐含地继承了Serializable.

但是enums如何防止单身人员的反序列化问题?

java singleton enums deserialization

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