小编def*_*ode的帖子

如何在Linux上的c中睡眠或暂停PThread

我正在开发一个我做多线程的应用程序.我的一个工作线程在窗口小部件上显示图像.另一个线程播放声音.我想在按钮单击事件上停止/暂停/暂停/休眠线程.和点击视频播放器播放/暂停按钮时相同.我正在使用pthread库进行线程化在linux平台上用c ++开发我的应用程序.

有人能告诉我如何实现线程暂停/挂起吗?

c c++ pthreads

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

在golang中使用template.ParseFiles的多个文件

例如,我有

package main

import "html/template"
import "net/http"

func handler(w http.ResponseWriter, r *http.Request) {
    t, _ := template.ParseFiles("header.html", "footer.html")
    t.Execute(w, map[string] string {"Title": "My title", "Body": "Hi this is my body"})
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}
Run Code Online (Sandbox Code Playgroud)

在header.html中:

Title is {{.Title}}
Run Code Online (Sandbox Code Playgroud)

在footer.html中:

Body is {{.Body}}
Run Code Online (Sandbox Code Playgroud)

去的时候http://localhost:8080/,我只看到"标题是我的标题",而不是第二个文件footer.html.如何使用template.ParseFiles加载多个文件?最有效的方法是什么?

提前致谢.

go go-templates

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

按值返回std :: vector

人们常说,在C++ 11中,std::vector按价值回归是理智的.

在C++ 03中,这主要是正确的,因为RVO应该优化副本.但这应该让大多数开发人员感到害怕.

  • 在C++ 11中,返回的std::vector局部变量总会被移动吗?
  • 如果该向量是局部变量的成员而不是局部变量本身怎么办?
  • 显然,不会移动返回全局变量.还有什么其他案例不会被移动?

c++ return-value move-semantics c++11

18
推荐指数
2
解决办法
2645
查看次数

哪些增强型库正在向TR2发展?

如果在boost.org上找到这个引用:

更多Boost库正在为TR2提供支持

它链接到提案TR2呼叫.但我似乎无法找到任何其他有关哪些增强库走向TR2的信息.

我已经看到了针对Boost.Asio的提案草案,我依稀记得看到有关Boost.System和Boost.Filesystem的建议.

  • 哪些推动库走向TR2?
  • 还有什么建议用于TR2?
  • 这有什么好的信息来源吗?

我知道现在每个人都真的专注于C++ 0x,并且不希望找到很多官方信息.但肯定有人记录了关于TR2的一些事情.

c++ boost boost-asio c++-tr2

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

Go是否支持易失/非易失性变量?

我是这个语言的新手,所以请耐心等待.

我很好奇GO如何处理线程可用的数据存储,因为非局部变量也可以是非易失性的,例如在Java中.

GO具有通道的概念,通过它的本质 - 线程间通信,意味着它绕过处理器高速缓存,并直接读取/写入堆.

另外,在go lang文档中没有找到对volatile的任何引用.

go

17
推荐指数
4
解决办法
5326
查看次数

非积分常数

我想要一个带有非整数常量的头文件,例如一个类.注意常数也并不需要是一个编译时间常数.

static const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)

这编译但不可取,因为每个编译单元现在都有自己的Ten副本.

const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)

这将编译但会因为多重定义的Ten的链接器错误而失败.

constexpr std::string Ten = "10"s;
Run Code Online (Sandbox Code Playgroud)

这可以工作,但前提是字符串构造函数也是constexpr.它会但是我不能指望每个非整数常量都有一个constexpr构造函数......或者我可以吗?

extern const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我担心如果我错误地呼吸,我会收到链接器错误.

inline const std::string Ten( ) { return "10"; }
Run Code Online (Sandbox Code Playgroud)

这有我想要的一切,除了干净的语法.另外,现在我必须将常量称为函数调用Ten().

inline const std::string = "10";
Run Code Online (Sandbox Code Playgroud)

这似乎是理想的解决方案.当然inline,标准不允许变量.

  • c ++标准中是否有一些内容表明外部版本应该有用,或者我很幸运它与GCC一起使用?
  • 是否有令人信服的理由不允许内联变量?
  • c ++ 03有更好的方法还是c ++ 0x会有更好的方法?

c++ inline constants c++11

16
推荐指数
3
解决办法
3971
查看次数

我可以将非聚合列与group by一起使用吗?

您不能(不应该)将非聚合放在查询SELECT行中GROUP BY.

但是,我想访问与max相关联的非聚合之一.用简单的英语,我想要一张每种类型最老的表格.

CREATE TABLE stuff (
   id int,
   kind int,
   age int
);
Run Code Online (Sandbox Code Playgroud)

这个查询给了我以后的信息:

SELECT kind, MAX(age)
FROM stuff
GROUP BY kind;
Run Code Online (Sandbox Code Playgroud)

但它不是最有用的形式.我真的希望id与每一行相关联,以便我可以在以后的查询中使用它.

我正在寻找这样的东西:

SELECT id, kind, MAX(age)
FROM stuff
GROUP BY kind;
Run Code Online (Sandbox Code Playgroud)

这输出:

SELECT stuff.*
FROM
   stuff,
   ( SELECT kind, MAX(age)
     FROM stuff
     GROUP BY kind) maxes
WHERE
   stuff.kind = maxes.kind AND
   stuff.age = maxes.age
Run Code Online (Sandbox Code Playgroud)

看起来真的应该离开以获取这些信息而无需加入.我只需要SQL引擎在计算最大值时记住其他列.

mysql sql group-by aggregate

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

从函数返回未导出的类型

从导出的函数返回未导出的类型是否被认为是不好的样式?
当我使用它时,我发现它只会产生问题.

一个更好的问题可能是:何时从导出的函数返回未导出的类型是个好主意.

go

16
推荐指数
3
解决办法
5222
查看次数

在c ++中使用realloc

std::realloc如果malloc内存包含非pod类型,则在c ++中是危险的.似乎唯一的问题是,std::realloc如果不能在原位增长记忆,就不会调用类型析构函数.

一个微不足道的工作将是一个try_realloc功能.如果它不能在原地生长,而不是malloc'ing新的记忆,它将简单地返回false.在这种情况下,可以分配新内存,将对象复制(或移动)到新内存,最后释放旧内存.

这看起来非常有用. std::vector可以充分利用这一点,可能避免所有副本/重新分配.
抢先阻燃:从技术上讲,这与Big-O性能相同,但如果矢量增长是您应用中的瓶颈,即使Big-O保持不变,x2加速也很好.

但是,我找不到任何有效的c api try_realloc.

我错过了什么吗?是try_realloc不是像我想象的那么有用吗?是否存在一些try_realloc无法使用的隐藏错误?

更好的是,是否有一些记录较少的API表现得如此try_realloc

注意:我很明显,在这里的库/平台特定代码中.我并不担心try_realloc本来就是一种优化.


更新: 继Steve Jessops评论是否vector使用realloc更有效率后,我写了一个概念验证来测试.该realloc-vector模拟载体的增长模式,但有realloc的替代选项.我在程序中运行了一百万个元素.

为了比较,vector必须分配19次,同时增加到一百万个元素.

结果,如果realloc-vector是唯一使用堆的结果是令人敬畏的,3-4分配同时增长到百万字节的大小.

如果将realloc-vector其与vector66%的速度一起使用,realloc-vector 那么结果的速度就不那么大了,在增长期间分配8-10次.

最后,如果realloc-vector与以vector相同速率增长的a一起使用,则realloc-vector分配17-18次.在标准向量行为上仅保留一个分配.

我不怀疑黑客可以通过游戏分配大小来提高节省,但我同意Steve的观点,即编写和维护这样一个分配器所付出的巨大努力并不适用.

c c++ memory-management realloc

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

与lambdas相比,std :: bind仍然有用吗?

可能重复:
绑定与Lambda?

std::bind由于lambdas获得了广泛的支持,我的使用已降至0.

是否有任何特别std::bind适合lambda函数的问题?

有没有令人信服的理由保持std::bind标准一旦增加了lambda?

c++ lambda bind c++11

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