Logic behind putting second thread there was to gain 3000 fps which is lost just by having event pulling in same loop as drawing
Effect is nearly identical with this code, although drop is from around 1000 to 200 on my machine.
But I see your point, it might be OS not SFML
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window;
window.create(sf::VideoMode(1680, 1050),"");
window.setVerticalSyncEnabled(false);
int fps = 0;
sf::Text fpsText;
sf::Clock clk;
std::string str;
char temp[20];
while(window.isOpen())
{
sf::Event event;
while(window.pollEvent(event));//needed to maximize
fps = 1/clk.getElapsedTime().asSeconds();
clk.restart();
sprintf(temp, "%d", fps);
str = temp;
fpsText.setString(str);
window.clear();
window.draw(fpsText);
window.display();
}
return 0;
}