首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mono在Ubuntu线程中崩溃

Mono在Ubuntu线程中崩溃
EN

Stack Overflow用户
提问于 2017-04-13 02:07:46
回答 1查看 580关注 0票数 0

我的程序(下面)可以在Fedora 22上运行,或者直接从main()调用线程函数。但是如果我在Ubuntu 16.04上的线程中启动mono调用,它会这样断言。我做错了什么吗?

霍华德·鲁宾

输出:

代码语言:javascript
复制
$ rm monotest.dll ; make ; ./monotest 
Mono C# compiler version 4.8.0.0 
mcs monotest.cs /out:monotest.dll /target:library 
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 
g++ monotest.cpp -o monotest -g3 -std=c++11 `pkg-config --cflags --libs mono-2` 
* Assertion at mono-threads-posix.c:265, condition `info->handle' not met 

Aborted (core dumped) 
$ 

==================================

代码语言:javascript
复制
// monotest.cpp 
#include <thread>
#include <mono/jit/jit.h>

void Thread() { 
    MonoDomain* domain = mono_jit_init("monotest.dll"); 
    mono_jit_cleanup(domain); 
} 

int main() { 
    //Thread(); 
    std::thread t(Thread); 
    t.join(); 
}

==================================

代码语言:javascript
复制
//////////////////////// 
// monotest.cs 
namespace MyNamespace  { 

    public class MyClass { 
        public MyClass() { } 

        public void MySum(int arg1, int arg2) { 
            System.Console.WriteLine("MySum(" + arg1 + "," + arg2 + ") => " + (arg1 + arg2)); 
        } 
    } 
} 

==================================

代码语言:javascript
复制
################### 
# Makefile 
monotest : monotest.cpp monotest.dll Makefile 
        @g++ --version | head -1 
        g++ $< -o $@ -g3 -std=c++11 `pkg-config --cflags --libs mono-2` 

monotest.dll : monotest.cs 
        @mcs --version 
        mcs $< /out:$@ /target:library 
EN

回答 1

Stack Overflow用户

发布于 2017-04-18 23:17:10

关于在mono中使用线程的文档严重不足,但通过实验可以使线程工作。

一种方法是使用mono_thread_create()。

另一种方法是在线程外部使用mono_jit_init()打开域,然后在创建的线程中,在开始时调用mono_thead_attach(),在结束时调用mono_thread_detach()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43376696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档