- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要实现一个库来使用 C 语言的线程。用户应该传递线程的函数及其参数,然后我需要为其处理和创建线程。这是添加新线程的函数:
int add_thread(void (*func)(int), int arg) {
printf("Adding thread #%d with arg:[%d] \n", threadsAdded, arg);
////// create the thread.....
makecontext(&uc[threadsAdded], (void (*)(void)) func, arg);
More none important things....
}
正如您所看到的,用户应该传递带有 void 类型、int 参数和参数的函数。
所以我尝试添加这个功能:
void f2(int n) {
while (1) {
printf("Thread #%d In progress:\n", n);
}
像这样:
add_thread(f2, 1);
add_thread(f2, 2);
add_thread(f2, 3);
add_thread(f2, 199);
问题是,函数 f2 获取的参数始终为 -1。所以我只是从所有线程中看到:
"Thread -1 In progress"
我猜问题是我将参数传递给 makecontext() 的方式...您发现我的代码有任何问题吗?
最佳答案
我用谷歌搜索,发现一个页面说 makecontext()
的第三个参数应该是参数的数量。 (this is the page供引用。此页面是用日语写的)
未经测试,试试这个:
makecontext(&uc[threadsAdded], (void (*)(void)) func, 1, arg);
关于c - c 中的线程无法正确地将函数传递给 makecontext(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34106827/
作为我任务的一部分,我一直在实现一个用户线程库。我不明白 makecontext 函数: makecontext(&(mainthread->threadctx),(void(*)(void))sta
我的问题与这一行有关: int f = makecontext( &threadList[ numThreads ].context 我的程序在没有赋值操作的情况下编译没有错误,但根本无法运行
我的程序包含以下行: makecontext( &threadList[ numThreads ].context, (void (*)(void)) &threadStart, 1, 5); 其中
我需要实现一个库来使用 C 语言的线程。用户应该传递线程的函数及其参数,然后我需要为其处理和创建线程。这是添加新线程的函数: int add_thread(void (*func)(int),
这个问题在这里已经有了答案: 关闭 11 年前。 我想按如下方式将变量参数传递给 makecontext 函数。 void a(...) { .... makecontext( &stack,
我正在尝试制作一个像 pthreads 这样的用户级线程库。我正在使用 makecontext()/swapcontext() 在线程之间进行切换,并在为线程创建上下文时传递 uctx_main 到上
我正在研究 C 编程中的上下文切换,并在 Internet 上找到了以下示例代码。我试图弄清楚是否只有 makecontext() 函数可以触发执行某些操作的函数。 setcontext()、getc
makecontext 的手册页声明 argc 之后的参数应该仅为 integer(int): ...the function func is called, and passed the serie
我看到了一些关于用户线程库的问题,但似乎没有一个能回答我的问题。我能够创建线程、运行它们、取消它们以及退出它们。由于某种原因我不能做的是让线程返回数据。 当我初始化我的线程库时,我将我的退出线程上下文
在another question我在移植代码时遇到了问题: unsigned long stack[] = { 1, 23, 33, 43 }; /* save all the registers
来自 makecontext() 手册... Due to limitations in the current pthread implementation, makecontext should
我对上下文切换很感兴趣。我已将示例代码复制到文件中 http://pubs.opengroup.org/onlinepubs/009695399/functions/makecontext.html
在 unix 环境中,makecontext()/swapcontext() 函数系列有时用于在 C 中实现协程。然而,这些函数直接操作堆栈和执行流。当从 C 切换到 C++ 时,这些低级功能通常有很
在调用makecontext之前,为什么我们需要设置堆栈大小ss_size? 我刚刚有一个针对 makecontext/swapcontext 代码段的单元测试用例,它因 SIGSEGV 而失败。发生
我已成功使用 makecontext/swapcontext 移动堆栈。但是,当我尝试将它与 pthread_mutex_lock 或 pthread_mutex_unlock 一起使用时,我总是
我无法将 C++0x lambda 函数作为第二个参数传递给 makecontext(来自 ucontext.h)。 makecontext 的签名是: void makecontext(uconte
#include #include #define _XOPEN_SOURCE 600 #include /* Tests creation. Should print "Hello Wo
我是一名优秀的程序员,十分优秀!