Donc je veux qu'une classe C++ contienne par exemple une fonction publique: int summ();
qui retournerait un int
qui serait créé comme somme de 2 variables (chacune de ces variables devrait être éditée par un thread)Comment créer une classe avec 2 threads à l'intérieur et un tableau de méthodes publiques qui ne sont pas dans ces threads? (C++, en utilisant des bibliothèques Boost)
donc besoin d'un Généralement, je échantillon comme this:
#include <iostream>
#include <boost/thread.hpp>
namespace this_thread = boost::this_thread;
int a = 0;
int b = 0;
int c = 0;
class BaseThread
{
public:
BaseThread()
{ }
virtual ~BaseThread()
{ }
void operator()()
{
try
{
for (;;)
{
// Check if the thread should be interrupted
this_thread::interruption_point();
DoStuff();
}
}
catch (boost::thread_interrupted)
{
// Thread end
}
}
protected:
virtual void DoStuff() = 0;
};
class ThreadA : public BaseThread
{
protected:
virtual void DoStuff()
{
a += 1000;
// Sleep a little while (0.5 second)
this_thread::sleep(boost::posix_time::milliseconds(500));
}
};
class ThreadB : public BaseThread
{
protected:
virtual void DoStuff()
{
b++;
// Sleep a little while (0.5 second)
this_thread::sleep(boost::posix_time::milliseconds(100));
}
};
int main()
{
ThreadA thread_a_instance;
ThreadB thread_b_instance;
boost::thread threadA = boost::thread(thread_a_instance);
boost::thread threadB = boost::thread(thread_b_instance);
// Do this for 10 seconds (0.25 seconds * 40 = 10 seconds)
for (int i = 0; i < 40; i++)
{
c = a + b;
std::cout << c << std::endl;
// Sleep a little while (0.25 second)
this_thread::sleep(boost::posix_time::milliseconds(250));
}
threadB.interrupt();
threadB.join();
threadA.interrupt();
threadA.join();
}
mais somme devrait pas programm mais dans une classe que notre programme principal serait capable de créer et d'obtenir ce summ()
en cas de besoin.
Comment faire une telle chose?
s'il vous plaît, fournir des exemples de code fonctionnel si possible. – Rella
alors, vous allez continuer à poser des questions lentement en ajoutant plus de détails jusqu'à ce que la communauté SO écrit l'application pour vous? Faire la classe de base est trivial, ce qui rend la synchronisation des données pour obtenir la somme que vous attendez est difficile parce que vous ne spécifiez pas ce qui devrait se passer si la somme calculée doit verrouiller les modifications apportées aux nombres pendant le calc. –