This repository was archived by the owner on Apr 24, 2022. It is now read-only.
File tree 5 files changed +19
-7
lines changed
5 files changed +19
-7
lines changed Original file line number Diff line number Diff line change @@ -614,11 +614,11 @@ class MinerCLI
614
614
// genesis.prep();
615
615
616
616
genesis.setDifficulty (u256 (1 ) << 63 );
617
- f.setWork (genesis);
618
617
if (_m == MinerType::CL)
619
618
f.start (" opencl" , false );
620
619
else if (_m == MinerType::CUDA)
621
620
f.start (" cuda" , false );
621
+ f.setWork (genesis);
622
622
623
623
map<uint64_t , WorkingProgress> results;
624
624
uint64_t mean = 0 ;
@@ -677,12 +677,12 @@ class MinerCLI
677
677
// genesis.prep();
678
678
679
679
genesis.setDifficulty (u256 (1 ) << difficulty);
680
- f.setWork (genesis);
681
680
682
681
if (_m == MinerType::CL)
683
682
f.start (" opencl" , false );
684
683
else if (_m == MinerType::CUDA)
685
684
f.start (" cuda" , false );
685
+ f.setWork (genesis);
686
686
687
687
int time = 0 ;
688
688
Original file line number Diff line number Diff line change @@ -41,7 +41,7 @@ enum class WorkerState
41
41
42
42
class Worker
43
43
{
44
- protected :
44
+ public :
45
45
Worker (std::string const & _name): m_name(_name) {}
46
46
47
47
Worker (Worker const &) = delete ;
@@ -55,11 +55,11 @@ class Worker
55
55
// / Stop worker thread; causes call to stopWorking().
56
56
void stopWorking ();
57
57
58
- virtual void workLoop () = 0;
59
-
60
58
bool shouldStop () const { return m_state != WorkerState::Started; }
61
59
62
60
private:
61
+ virtual void workLoop () = 0;
62
+
63
63
std::string m_name;
64
64
65
65
mutable Mutex x_work; // /< Lock for the network existance.
Original file line number Diff line number Diff line change @@ -143,7 +143,14 @@ void CLMiner::workLoop()
143
143
// take local copy of work since it may end up being overwritten by kickOff/pause.
144
144
try {
145
145
const WorkPackage w = work ();
146
- cllog << " Set work. Header" << w.header << " target" << w.boundary .hex ().substr (0 , 12 );
146
+
147
+ if (!w)
148
+ {
149
+ cllog << " No work. Pause." ;
150
+ return ;
151
+ }
152
+
153
+ cllog << " Set work. Header" << w.header << " target" << w.boundary .hex ();
147
154
if (m_seed != w.seed )
148
155
{
149
156
if (s_dagLoadMode == DAG_LOAD_MODE_SEQUENTIAL)
Original file line number Diff line number Diff line change @@ -100,8 +100,12 @@ class Farm: public FarmFace
100
100
}
101
101
for (unsigned i = start; i < ins; ++i)
102
102
{
103
+ // TODO: Improve miners creation, use unique_ptr.
103
104
m_miners.push_back (std::shared_ptr<Miner>(m_sealers[_sealer].create (*this , i)));
104
- m_miners.back ()->setWork (m_work);
105
+
106
+ // Start miners' threads. They should pause waiting for new work
107
+ // package.
108
+ m_miners.back ()->startWorking ();
105
109
}
106
110
m_isMining = true ;
107
111
m_lastSealer = _sealer;
Original file line number Diff line number Diff line change @@ -155,6 +155,7 @@ class Miner: public Worker
155
155
Guard l (x_work);
156
156
m_work = _work;
157
157
}
158
+ assert (!!_work);
158
159
if (!!_work)
159
160
{
160
161
pause ();
You can’t perform that action at this time.
0 commit comments