hi, i have been working with SFML for 2 months.
I tried to do visualizing sorting methods.
After some research i found that threading is the only way which satisfy my needs.
But i failed to implement threading to my code. Got some errors, unexpected outputs.
Here is the code:
#include<SFML/Graphics.hpp>
#include<iostream>
#include<functional>
class sorting
{
:// some code
public:
update_merge_sort(int a,int b)
{
// merge sort things
// contains recursion function
}
};
int main()
{
sorting objects;
sf::RenderWindow w(sf::VideoMode(1550, 850), "SORTING ALGORITHMS", sf::Style::Default);
sf::Thread thread_1(std::bind(&sorting::update_merge_sort,&objects,0,0));//declared global because the this has to run aslong as program runs, thread is not launched
sf::Event e;
while (w.isOpen()) {
while (w.pollEvent(e))
{
mos_pos = w.mapPixelToCoords(sf::Mouse::getPosition(w));
switch (e.type) {
case 0:
w.close(); break;
case sf::Event::KeyPressed:
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{ // start the thread here;
/*
thread_1(sf::Thread(std::bind(&sorting::update_merge_sort, &objects, 0, count - 1)));
thread_1=(sf::Thread(std::bind(&sorting::update_merge_sort, &objects, 0, count - 1)));
std::thread th(&sorting::update_merge_sort, &objects, 0, count - 1);
//sf::Thread ti((std::bind(&sorting::update_merge_sort, &objects, 0, count - 1)));
//thread_1(new t1);--
thread_1.launch();
*/
}
}
://render things
}
}
i cant find a way to start the thread when key is pressed.
I tried declaring thread inside IF statement, But the thread scope gets over there itself.
So i used sf::Thread, and tried calling the sf::Thread constructor to update the thread values, but failed.
I tried all possible ways mentioned which has been inside comments.
I Hope you can provide a way to solve this .