首页 文章
  • 0 votes
     answers
     views

    在Xeon Phi协处理器上使用Pthreads

    我使用pthreads编写了一个简单的平流方程求解器,它在处理器上正常工作 . 然而,当我使用-mmic标志编译它并在协处理器上运行(使用micnativeloadex)时,它只使用 one 线程(我很难编码它使用200) . 据我所知,代码应该按原样运行 . 我在这里错过了什么吗? 代码非常脏,但仍然是完整的 . #include <stdlib.h> #include <st...
  • 1 votes
     answers
     views

    为什么C“Hello World”需要Eclipse Mars中的pthread(缺少)?

    我已经运行Eclipse Juno和MinGW 4.6.2很长一段时间了,但我需要完整的C 11支持,所以我升级到Eclipse Mars并在另一个目录中安装了MinGW 4.9.3 . 在Mars中,链接任何可执行文件 - 即使在C Hello World项目中 - 导致“C:\ MinGW_4_9_4 \ bin ... \ ld.exe:找不到-lpthread” . 4.6.2目录(对于J...
  • 49 votes
     answers
     views

    为什么围绕pthread等待条件需要while循环?

    我正在学习pthread和等待条件 . 据我所知,一个典型的等待线程是这样的: pthread_mutex_lock(&m); while(!condition) pthread_cond_wait(&cond, &m); // Thread stuff here pthread_mutex_unlock(&m); 我无法理解的是,即使我使用 pthre...
  • 3 votes
     answers
     views

    使用pthreads互斥和条件变量

    我正在寻求一些帮助的问题写在点号 . 在此之前,我描述了我的代码的结构 . 从 main() ,创建两个线程thread1和thread2,并分别初始化为两个函数 fun1() 和 fun2() . 我有一个名为 lock_mutex 的互斥锁和名为 cond1 , cond2 , cond3 和 cond4. 的条件变量 我有全局布尔变量 var1 , var2 , var3 和 ...
  • 23 votes
     answers
     views

    pthread互斥体的“属性”是什么?

    函数pthread_mutex_init允许您指定指向属性的指针 . 但我还没有找到pthread属性的详细解释 . 我总是提供NULL . 这个论点有用吗? 文档,对于那些忘记它的人: PTHREAD_MUTEX_INIT(3)BSD库函数手册PTHREAD_MUTEX_INIT(3)名称pthread_mutex_init - 创建互斥锁概要#include <pthread.h&g...
  • 75 votes
     answers
     views

    在不锁定互斥锁的情况下调用pthread_cond_signal

    我在某个地方读到我们应该在调用 pthread_cond_signal 之前锁定 mutex 并在调用后解锁静音: pthread_cond_signal()例程用于发信号(或唤醒)正在等待条件变量的另一个线程 . 它应该在锁定互斥锁后调用,并且必须解锁互斥锁才能完成pthread_cond_wait()例程 . 我的问题是:是不是可以在不锁定互斥锁的情况下调用 pthread_cond_si...
  • 2 votes
     answers
     views

    pthread互斥锁在等待时无法解锁

    我正在使用c posix线程,我遇到了一个我不太了解的问题,想要一些新鲜的眼睛来看看问题是什么 . 总之,我正在创建3个线程来检查某些程序状态,发出信号表明它们已准备就绪,然后等待更多信号 . 同时,创建这些线程的线程正在等待(pthread_cond_wait_)每个线程发出信号表明它已经被设置 . 但是,一旦发出等待信号,似乎永远不会解锁互斥锁,导致程序完全停止 . 这是主线程的代码: pth...
  • 0 votes
     answers
     views

    ps中的zombiefied线程(用于用c编写的线程程序)

    我担心我不确定我在这里做错了什么 . 我有一个线程应用程序,启动时启动3个线程 [root@Embest /]# ps 1111 root 608 S fw634c_d_cdm_sb 1112 root 608 S fw634c_d_cdm_sb 1113 root 608 S fw634c_d_cdm_sb 然后在待机模式下等待来自串口的...
  • 1 votes
     answers
     views

    如何在pthread_exit和pthread_join之间传递退出状态?是否需要在手册页中进行更正?

    题: pthread_exit和pthread_join之间的退出状态究竟是如何传递的? 从pthread_join man page int pthread_join(pthread_t thread, void **retval); 如果retval不为NULL,则pthread_join()将目标线程的退出状态(即目标线程提供给pthread_exit(3)的值)复制到* retval指...
  • 3 votes
     answers
     views

    pthread_cond_signal导致死锁

    我有一个程序,当其中一个线程调用 pthread_cond_siganl (或广播)时死锁 . 该问题在主程序中可100%重现 . 我无法弄清楚它有什么问题,因此提取了等待和信号调用的代码片段 . 但是,死锁 cannot 可以用提取的问题进行复制 . 在主程序上运行 valgrind 不会报告任何无效的读/写或内存泄漏 . 我想知道在调用 pthread_cond_signal 时死锁的可能原因...
  • 1 votes
     answers
     views

    pthread条件变量和互斥锁,程序有死锁

    我的多线程代码有问题,有一个死锁,但我不知道如何解决它,因为我对pthreads很新 . 下面的代码显示了一个名为“idle”的函数,它等待模拟进程放在readyqueue上,push函数应该将该进程放在队列上,然后发出信号表明有一个进程准备好进行调度 . 以下是导致死锁的两个函数: void push(pcb_t *pcb) { pthread_mutex_lock(&queue...
  • 1 votes
     answers
     views

    Pthread条件变量,没有死锁

    当我查看主题时,我发现了here的代码 . 如您所见,两个函数的线程使用相同的 mutex . 那么,即使先前的线程拥有互斥锁,如何发信号通知其他线程或捕获信号并继续其功能?怎么/为什么't there a deadlock? It'有点令人困惑 . #include <stdio.h> #include <stdlib.h> #include <pthread.h...
  • 0 votes
     answers
     views

    Pthread同步:两个文本文件的返回和读取

    我正在编写一个创建两个线程的程序 . 每个线程负责读取一个文本文件,每行有一个字符 . 第一种格式如下: h 0 h 0 ... 第二个格式如下: 0 i 0 i 0 i 有时可能会有多个字母在彼此之后,或者在彼此之后有多个零 . 但是,可以肯定的是,如果一个文件的一行上有一个字母,则第二个文件的相应行将为0,反之亦然 . 线程应该继续将文件输入读取到全局char数组中,直到它们达到零 . 此...
  • 7 votes
     answers
     views

    对fgets的pthread和fopen64段错误

    我正在使用Kubuntu 12.04,gcc 4.6.3 . 如果我创建一个pthread,请使用fopen64然后fgets - 它是segfaults . 用fopen替换fopen64的相同代码 - 它成功了 . 没有创建pthread - 它成功了 . 那么为什么失败呢?这是代码: #include <stdio.h> #include <pthread.h> ...
  • 1 votes
     answers
     views

    由pthread产生的Segfault?

    我一直在墙上敲打几个小时,现在试图找出造成这一段错误的原因 . 我发现在 pthread_mutex_lock(lock) 行(38)上一直发生了段错误 . 我已经在锁定周围放置了两个打印语句,但是只有其中一个打印,这是我得出结论在该指令处发生段错误的理由 . 我正确使用互斥锁,还是我的数组 (buffer[] 和 numbermarker[] 犯了错误? #include <stdio.h...
  • 0 votes
     answers
     views

    Segfault第二次启动pthreads时

    我有一个程序进行一些计算等,并使用pthreads启动一些线程 . 这很好用 . 但是我需要为基准类型的事物多次启动相同的线程集 . 当我第二次启动它时,我得到一个段错(核心转储) . 选定代码: pastebin替代(缺少第一个互斥线)应包括与问题相关的任何内容:http://pastebin.com/5iUsy8L2 function() { pthread_mutex_t pmutex; f...
  • -5 votes
     answers
     views

    pthread段错误发生在哪里?

    在我的程序中,我提供了一个包含文本文件的目录 . 每个文本文件包含以下格式的几百行 Username,Password,BloodType,Domain,Number 然后,我为目录中的每个文件创建一个线程,该线程将这些行合并(按数字排序)到数组char * text_lines [6000]; 我无法弄清楚为什么我会遇到分段错误,因为我在每次运行时都会得到不同的输出 . 继承我的代码: #in...
  • 4 votes
     answers
     views

    C:pthread segfaults

    我正在使用pthread编写我的第一个C程序 . 我想为commadline(argv)上提供的所有(非选项)参数运行我的函数 sha1sum . pthread_t t[256]; c = 0; for (n = optind; n < argc; n++) { if(pthread_create(&t[c], NULL, sha1sum, argv[n])) { ...
  • 1 votes
     answers
     views

    Pthread_create导致C中的分段错误

    我正在尝试接受Integer值,并在程序中创建该数量的线程 . 很奇怪,只能创建第一个线程 . 经过一些跟踪后,它显示pthread_create是导致核心转储的行 . #include <iostream> #include <time.h> #include <pthread.h> using namespace std; class Kevin { pu...
  • 1 votes
     answers
     views

    C:如何取消引用无效**?

    请考虑以下代码: void* run(void* arg) { int* array=(int*)arg; printf("In run!\n"); int i; for (i=0; i<10; i++) { printf("%d ",array[i]); } printf(&quo...
  • 6 votes
     answers
     views

    主/工作线程和信号处理

    我正在编写一个程序,有一个主线程和一些工作线程,我想让信号处理正确 . 我的问题如下: 主线程启动并执行所有分配 主线程设置SIGINT信号处理程序 主线程启动工作线程 . 工作线程不需要特殊清理,但是它们可以在系统调用或信号量上休眠 . 收到SIGINT时,我的理解是只有一个线程接收它 . 因此,如果线程在系统调用或信号量上休眠,它们就不会被唤醒,我将无法pthread_join我的工作线程并在...
  • 1 votes
     answers
     views

    等待几个线程中的一个完成?

    我正在实现一个线程池 . 每个线程所需的工作是1-10秒的CPU,所以我很高兴有一个传统的工作线程池,或者我很乐意为每个工作单元生成一个新的线程 . 没关系 . 我想有一些方法让主控制线程知道N个工作线程中的一个何时完成其工作并准备好更多(或者是时候启动另一个) . 我看过pthread_join和pthread_cond_wait . 似乎没有办法等待N中的一个 . 所以我想主线程有一个变量,它...
  • 0 votes
     answers
     views

    在没有互斥锁的情况下立即唤醒所有线程

    我的程序根据行的字段之一处理不同线程中的数据库行 . 主线程产生“ Worker ”,执行查询,然后,对于每一行,需要唤醒所有工作人员以使其中一人消耗该行 . 现在,使用pthread_cond_broadcast()似乎是最合乎逻辑的选择 . 但是,在这种情况下,工作者必须使用相同的互斥锁在pthread_cond_wait()内等待 . 在我的情况下,这是次优的,因为这意味着, Worker ...
  • 2 votes
     answers
     views

    pthread_cond_wait有时不会收到信号

    pthread_cond_wait 和 pthread_cond_signal 我有一个奇怪的问题 . 我已经安排了一系列线程 . 它们在启动时都处于睡眠状态 . 唤醒功能将发出这些线程的信号,做一些工作,并等待结果 . 在下面的设置中, td 是包含互斥锁和条件的线程数据, th 是包含指向线程的指针的数组: for (size_t i = 0; i < NUM_THREADS; i++)...
  • 0 votes
     answers
     views

    操作系统(同步)

    int i = 0; ... void * A (void * param){ ... i *= 3; ... } void * B (void * param){ ... i--; ... } main(){ pthread_t ta, tb ... pthread_create(&ta, 0, A, 0); pthread_c...
  • -1 votes
     answers
     views

    pthread_cancel与std :: condition_variable等待?

    我有许多使用 std::condition_variable 的 wait 函数运行事件队列的pthread . 我希望能够将 pthread_cancel 发送到这些工作线程,然后成功 pthread_join . 但是,我注意到 pthread_join 挂起,整个程序陷入僵局 . 有办法做我想做的事吗? 下面是我的一个工作线程循环的示例(此函数作为 pthread_create 的参数给出...
  • 0 votes
     answers
     views

    pthread_create在第三个参数上需要哪种类型

    这是正确使用pthread_create而没有警告: #include <pthread.h> #include <stdio.h> void *check(void *temp) { int* i = (int *)temp; printf("%d\n", *i); } int main(void) { pthread_t c...
  • -3 votes
     answers
     views

    在大学的c项目中不能使用带螺纹的管道

    有谁可以帮助我吗?我正在尝试创建一个命名管道,它将信息发送到我的主进程,然后根据进程接收的内容,正在等待的线程执行某些操作 . 问题是,如果我创建线程,我的管道不会收到我发送回信号的任何字符串 . 有人能帮我吗?这是我认为是问题的代码块的screenshot .
  • -2 votes
     answers
     views

    如何找出正在运行的线程以及如何在C中使用信号量

    我正在做一个程序,其中用户输入了票数和卖家数 . 我有一个线程数组,线程数等于卖家数 . 我必须通过对所有线程使用卖出功能来“卖”票 . 我必须使用计数信号量来查看我剩下的票数和每个线程销售的票数 . 输出看起来像卖家#1卖了一个(49左)卖家#0卖了一个(48左)卖家#1卖了一个(47左)卖家#1卖了一个(46左)卖家#1卖了一个(45)左)卖家#1卖了一个(44左)卖家#1卖了一个(左边43个...
  • 2 votes
     answers
     views

    Pthreads:分段错误错误

    我有几个问题 . 这是我第一次尝试制作多线程程序 . 注意 - 完整程序位于页面底部 (编译,使用 g++ -pthread -o <executable file name> <sourcefile>.cpp -fpermissive ) 我使用Ubuntu Studio 10.10 64位编译它 . 这个程序最大的问题是它给了我一个分段错误 . 它似乎是由我在int ...

热门问题