小编Rom*_*ian的帖子

Ruby同步:如何使线程以适当的顺序一个接一个地工作?

我的问题是我不知道如何使用Ruby同步多个线程。该任务是创建六个线程并立即启动它们。他们都应该puts "Thread 1" Hi"按我需要的顺序依次进行一些工作(例如)。

我已经尝试过使用Mutex,Monitor和Condition Variable,但是它们都以随机顺序工作。有人可以解释如何实现我的目标吗?

经过一段时间与Mutex和Condition Variable的斗争后,我实现了我的目标。这段代码有点混乱,我故意不使用循环来获得“更清晰的视图”。

cv = ConditionVariable.new
mutex = Mutex.new

mutex2 = Mutex.new
cv2 = ConditionVariable.new

mutex3 = Mutex.new
cv3 = ConditionVariable.new

mutex4 = Mutex.new
cv4 = ConditionVariable.new

mutex5 = Mutex.new
cv5 = ConditionVariable.new

mutex6 = Mutex.new
cv6 = ConditionVariable.new



Thread.new do
  mutex.synchronize {
    puts 'First: Hi'
    cv.wait(mutex)
    puts 'First: Bye'
    #cv.wait(mutex)
    cv.signal
    puts 'First: One more time'
  }

end

Thread.new do
  mutex.synchronize {
    puts 'Second: Hi'
    cv.signal
    cv.wait(mutex)
    puts 'Second:Bye'
    cv.signal
  }

  mutex2.synchronize …
Run Code Online (Sandbox Code Playgroud)

ruby multithreading synchronization mutex monitor

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

C++:为什么我会出现分段错误?

这是我的代码:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>


using namespace std;

struct Computer
{
    char * model;
    char * assembler;
    int processorInt;
};

int main()
{
    Computer comp;
    char* model;
    char* assembler;
    int processorInt;

    cin>>model;
    cin>>assembler;
    cin>>processor int;

    comp.model = model;
    comp.assembler = assembler;
    comp.processorInt = processorInt;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

//如果我这样做,它可以工作,但如果我以另一种方式做,它会给出分段错误

#include <iostream>
#include <stdio.h>
#include <stdlib.h>


using namespace std;

struct Computer
{
    char * model;
    char * assembler;
    int processorInt;
};

void setValues()
{
    Computer comp;
    char* model;
    char* assembler; …
Run Code Online (Sandbox Code Playgroud)

c++ segmentation-fault

0
推荐指数
1
解决办法
219
查看次数