可能重复:
使用成员函数启动线程
我最近一直在使用c ++ 11中的新std :: thread库,我遇到了一个问题.当我尝试将一个类函数传递给一个新线程时,它给了我一个错误(我现在没有确切的错误文本,因为我远离家乡)我有一个像这样的类
class A
{
void FunctA();
void FunctB();
void run()
{
std::thread t(FunctA);
std::thread r(FunctB);
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我一直在阅读 gcc 生成的一些不同的arm汇编代码,并且遇到了一些我在规范中找不到的东西。
movw r0, #39784
movt r0, 1
Run Code Online (Sandbox Code Playgroud)
显然,第一个是将值 39784 移动到底部 16 位或 r0,但 movt 的操作数“1”很奇怪,因为它前面没有哈希,而且我的印象是立即值需要哈希。在某些情况下它是可选的吗?或者我错过了一些神奇的东西?
我试图使用libgit2sharp库.我唯一的代码是
Repository repository = new Repository(@"C:\Path\To\Repo");
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到一个错误,说无法加载DLL'git2':找不到指定的模块.所以,我手动去抓取libgit2sharp中的git2.dll并将其移动到目录中.之后运行相同的程序时,我收到另一个错误:尝试加载格式不正确的程序.
在研究这篇文章的过程中,我发现这篇文章和解决方案似乎对海报有用,但对我来说并没有用.这个帖子也是在一年前制作的,并且为它做了一个假定的修复,我使用libgit2sharp的最新分支(香港专业教育学院尝试过较旧的存储库没有变化)
有任何想法吗?
我有一个用c#编写的命令行工具(我有源代码),我在visual studio 2010中制作了一个gui.在gui中我想更新进度条以反映工具操作的进度.我如何从工具内部发出已取得进展的信号并更新进度条?我正在做的一些简化示例代码.
private void doThings_Click(object sender, EventArgs e)
{
myToolInstance.doWorkThatNeedsToReportProgress();
}
Run Code Online (Sandbox Code Playgroud)
该工具正在完成的工作是一系列函数调用,通常在30左右.我想在每次完成其中一个时更新进度条.
我总是被告知要对多个线程将访问的变量进行锁定,我一直认为这是因为你要确保在你写回来之前你正在使用的值没有改变,即
mutex.lock()
int a = sharedVar
a = someComplexOperation(a)
sharedVar = a
mutex.unlock()
Run Code Online (Sandbox Code Playgroud)
你有理由把它锁定.但在其他情况下,我不明白为什么我不能不使用互斥锁.
线程A:
sharedVar = someFunction()
Run Code Online (Sandbox Code Playgroud)
线程B:
localVar = sharedVar
Run Code Online (Sandbox Code Playgroud)
在这种情况下可能出现什么问题?特别是如果我不关心线程B读取线程A分配的任何特定值.