问题:我想使用所谓的两相锁定概念同时计算一些方程。
我的方法:创建一个数组,将实时更新每个变量的值。我有点卡在我应该创建线程的方式上,在算法上应用互斥锁/信号量以并发执行。
输入(当然,我会建立一个更大的方程组来测试并发程序的效率)
2
3 6
&0 = &0 + 4 + 3
&1 = &0 - &1 + 2 + 5
&0 = &1 + 3
输入说明:
第一行是未知数。(&0 和 &1 是未知数)第二行是它们各自的初始值。(&0 等于 3,&1 等于 6) 下一行是方程式。
输出
&0 = 14
&1 = 11
在我实现方程的结构下方(可以吗?可以改进吗?)
struct X{
int id; // the calculated variable
int sum; // the sum of every constants
std::string eq; // the row as a string
std::unordered_map<int, int> unknowns; // store all the unknowns and counts them
X(std::string);
void parsing(); // parse eq to get id, sum and unknowns
void updating(); // update the value of id on a global array when all the unknowns are available
};